从Java

时间:2015-07-06 01:06:42

标签: java parsing

解析多个目录中的多个文件的最佳方法是什么?

我有一个包含51个子文件夹的文件夹,每个子文件夹包含100个文件。

我知道如何使用

扫描单个文件
File dataFile = new File("A.txt");
    scan = new Scanner (dataFile);

    while (scan.hasNext()){ 
        System.out.print(scan.next() + "\t");
    }

但是如何概括这一点来从不同的目录中读取?

3 个答案:

答案 0 :(得分:0)

您应该使用FileVisitor(您实现的接口),然后使用Files.walkFileTree(路径路径,FileVisitor访问者)将其投入使用。 在您的情况下,您可以简单地继承SimpleFileVisitor类:

import static java.nio.file.FileVisitResult.*;

public static class PrintFiles
    extends SimpleFileVisitor<Path> {

    @Override
    public FileVisitResult visitFile(Path file,
                                   BasicFileAttributes attr) {
        if (attr.isSymbolicLink()) {
            System.out.format("Symbolic link: %s ", file);
        } else if (attr.isRegularFile()) {
            System.out.format("Regular file: %s ", file);
        } else {
            System.out.format("Other: %s ", file);
        }
        System.out.println("(" + attr.size() + "bytes)");
        return CONTINUE;
    }

}

答案 1 :(得分:0)

 void recursiveParse(String directory){
    for(File fileOrFolder : directory.listFiles()){
       if(fileOrFolder.isDirectory()){
          for (String singleFileOrFolder : fileOrFolder.listFiles()){
             recursiveParse(singleFileOrFolder); 
       }
       else{
          // parse the file
       }
    }
}

答案 2 :(得分:0)

它仅适用于包含子目录的文件夹,每个子目录不包含子目录:

import java.io.File;
import java.io.IOException;
import java.util.Scanner;
class ScanFilesInSubFolders {
        public static void main(String[] args) throws IOException {
                System.out.println("Enter the path to search");          

                Scanner scanner = new Scanner(System.in);
                String folderPath = scanner.next();
                File [] files1 = null;
                File folder = new File(folderPath);
                if (folder.isDirectory()) {
                        File[] listOfFiles = folder.listFiles();                 
                        for (File file : listOfFiles) {
                               if(file.isDirectory()) {
           files1 = file.listFiles();  
            for(File file2 : files1)
            {
    Scanner file3 = new Scanner (file2);
    while (file3.hasNext()){ 
        System.out.print(file3.next() + "\t");
    }   
        System.out.print("\n");
            }
}
                        }
                }
        }
}
相关问题