解析多个目录中的多个文件的最佳方法是什么?
我有一个包含51个子文件夹的文件夹,每个子文件夹包含100个文件。
我知道如何使用
扫描单个文件File dataFile = new File("A.txt");
scan = new Scanner (dataFile);
while (scan.hasNext()){
System.out.print(scan.next() + "\t");
}
但是如何概括这一点来从不同的目录中读取?
答案 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");
}
}
}
}
}
}