【发布时间】:2017-08-19 07:09:33
【问题描述】:
我已经编写了一段代码,我打算在其中获取所有文件(.txt、jpg、.png、.pdf)的列表,不包括目录名。事实上,代码应该在每个目录中爬行并给出文件名。我希望文件以排序方式列出。
class CompareFiles implements Comparator<File>{
@Override
public int compare(File arg0, File arg1) {
return arg0.getName().compareTo(arg1.getName());
}
}
使用它的类:
public class DirectoryRecursion {
public static void check(String path) {
File list = new File(path);
File[] listOfFile = list.listFiles();
ArrayList<File> asf = new ArrayList<File>();
for(File file: listOfFile){
if(file.isDirectory())
check(file.getAbsolutePath());
else {
asf.add(file);
}
}
System.out.println("Before: ");
for(File file: asf)
System.out.println("File: " + file.getName());
Collections.sort(asf, new CompareFiles());
System.out.println("Before: ");
for(File file: asf)
System.out.println("File: " + file.getName());
}
}
但不幸的是,“之前”和“之后”的输出是相似的。
【问题讨论】:
-
您能否分享您获得的预期和实际输出示例以及提供的输入。
-
除了你的 System.out.println( ) 用于排序之后 - 应该说 System.out.println("After: ") - 而不是 "Before",这应该有效.. .
-
哎呀,前第二个应该是“之后”,但我的代码没有按要求工作。
-
之前:文件:e.bmp 文件:f.bmp 之后:文件:e.bmp 文件:f.bmp 之前:文件:a.txt 文件:c.txt 之后:文件:a. txt 文件:c.txt 之前:之后:之前:文件:a.bmp 文件:a.JPG 文件:b.txt 文件:c.bmp 文件:d.txt 之后:文件:a.JPG 文件:a.bmp 文件:b.txt 文件:c.bmp 文件:d.txt 类似这样的东西。很乱。
-
所以,它工作正常。文件按字典顺序排序。你还有什么期待?请参见最后一个示例,其中 a.JPG 位于 a.bmp 之后,因为 J 在字典顺序中位于 b 之前。
标签: java file recursion comparator