【发布时间】:2017-12-25 18:01:37
【问题描述】:
您好,我正在尝试按数字顺序获取文件夹中存在的所有文件。
首先,我检查一个文件夹(主文件夹),其中包含子文件夹。之后,对于每个子文件夹,我将获取其中存在的文件的名称。
我编写了一个代码来为我完成这项工作,但是当我打印(子文件夹的文件名)时,我没有得到正确的顺序。(数字)。
例如,我有一个名为 'test' 的主文件夹,其中存在 3 个名为 Sub1、Sub2、Sub3
的子文件夹 FOLDER Test *contains* [ FOLDER SUB1 || FOLDER SUB2 || FOLDER SUB3 ]
每个子文件夹都有文件名(1.txt, 2.txt,.....,15.txt,16.txt,...,22.txt,...等)
这段代码完成了这项工作......但是......
import java.io.File;
import java.io.FileFilter;
public class Main {
public static void main(String[] args) {
File file = new File("C:\\test");
File[] files = file.listFiles(new FileFilter() {
public boolean accept(File f) {
String name=f.getName(); //read every subfodler name
System.out.println(name);
File folder = new File("C:\\test\\"+name); //for each subfolder
File[] listOfFiles = folder.listFiles();
for (int i = 0; i < listOfFiles.length; i++) {
if (listOfFiles[i].isFile()) {
System.out.println("File " + listOfFiles[i].getName());
//print the names of files that included
} else if (listOfFiles[i].isDirectory()) {
System.out.println("Directory " + listOfFiles[i].getName());
}
}
return f.isDirectory();
}});
}
}
但输出是这样的......
Folder1
File 1.txt
File 10.txt
File 11.txt
File 12.txt
File 13.txt
File 14.txt
File 2.txt
File 3.txt
File 4.txt
File 5.txt
File 6.txt
File 7.txt
File 8.txt
File 9.txt
Folder2
............... same order as Folder1 ... etc
我如何使用数字顺序获取文件名,这样我将得到的输出将是这样的:
Folder1
File 1.txt
File 2.txt
File 3.txt
File 4.txt
File 5.txt
File 6.txt
File 7.txt
File 8.txt
File 9.txt
File 10.txt
File 11.txt
File 12.txt
File 13.txt
File 14.txt
【问题讨论】:
-
它们已经按升序排列。你想要的是numerical order
-
如果您正确缩进,更多人会查看您的代码。现在,它很难阅读。此外,您正在滥用 FileFilter;它的工作只是过滤文件,它不应该被用作“每个文件”的快捷方式。