黑马程序员技术交流社区

标题: 关于利用FIle对象遍历文件夹下所有的文件 [打印本页]

作者: 大大大卷    时间: 2015-9-22 22:57
标题: 关于利用FIle对象遍历文件夹下所有的文件
用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文件中,

作者: zllqxy    时间: 2015-9-22 23:46
谢谢分享
作者: 一枝梨花压海棠    时间: 2015-9-23 00:18
不错~~~~~~~~~~~~~~~~~~~~~
作者: fmi110    时间: 2015-9-23 10:22
为什么要加一个HashSet呢?递归的时候直接输出到文件不好吗?

作者: pegasus    时间: 2015-9-23 10:44
  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. }
复制代码

作者: 生存追求    时间: 2015-9-23 13:25
谢谢分享




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2