A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

用FIle对象遍历,将文件名存到hashset中,利用递归遍历子目录

代码如下
  1. import java.io.BufferedWriter;
  2. import java.io.File;
  3. import java.io.FileWriter;
  4. import java.io.IOException;
  5. import java.util.HashSet;
  6. import java.util.Iterator;

  7. public class DeepGet {
  8.         public static int count = 0;
  9.         public static void main(String[] args) throws IOException {
  10.                 // TODO 自动生成的方法存根
  11.                
  12.                 File f = new File("D:\\Sid Meier's Civilization V");
  13.                 HashSet<File> hs = new HashSet<File>();
  14.                 deepGet(f,hs);
  15.                 FileWriter fw = new FileWriter("root.txt");
  16.                 BufferedWriter buw = new BufferedWriter(fw);
  17.                
  18.                 Iterator<File> is = hs.iterator();
  19.                 while(is.hasNext()){
  20.                         String str = is.next().toString();
  21.                         buw.write(str);
  22.                         buw.newLine();
  23.                         buw.flush();
  24.                         System.out.println(str);
  25.                 }
  26.                 buw.close();
  27.                 System.out.println(hs.size());
  28.                 System.out.println(count);
  29.         }
  30.         public static HashSet<File> deepGet(File f,HashSet<File> hs)
  31.         {       
  32.                 File[] files = f.listFiles();
  33.                 for (File file : files) {
  34.                         if(file.isDirectory()){
  35.                                 deepGet(file,hs);
  36.                                 count++;
  37.                         }
  38.                         else
  39.                         {
  40.                                 hs.add(file);
  41.                         }
  42.                 }
  43.                 return hs;
  44.         }
  45.        

  46. }
复制代码


最后将文件名写到一个txt文件中,

5 个回复

倒序浏览
谢谢分享
回复 使用道具 举报
不错~~~~~~~~~~~~~~~~~~~~~
回复 使用道具 举报
为什么要加一个HashSet呢?递归的时候直接输出到文件不好吗?
回复 使用道具 举报
  1. public static void main(String[] args) throws IOException {
  2.         String glob = "glob:**.*";
  3.         String path = "E:/pegasus";
  4.         match(glob, path);
  5. }

  6. private static void match(String glob, String location) throws IOException {
  7.         final PathMatcher pathMatcher = FileSystems.getDefault()
  8.                         .getPathMatcher(glob);
  9.         Files.walkFileTree(Paths.get(location), new SimpleFileVisitor<Path>() {
  10.                 @Override
  11.                 public FileVisitResult visitFile(Path path,
  12.                                 BasicFileAttributes attrs) throws IOException {
  13.                         if (pathMatcher.matches(path)) {
  14.                                 System.out.println(path);
  15.                         }
  16.                         return FileVisitResult.CONTINUE;
  17.                 }
  18.         });
  19. }
复制代码
回复 使用道具 举报
谢谢分享
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马