【问题标题】:Sorted list of files in a particular folder特定文件夹中文件的排序列表
【发布时间】: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


【解决方案1】:

就基于自定义比较器CompareFiles 的排序而言,示例输出似乎很好:

Before: File: a.bmp File: a.JPG File: b.txt File: c.bmp File: d.txt 
After: File: a.JPG File: a.bmp File: b.txt File: c.bmp File: d.txt

只是为了证明字符串 a.JPGlexicographically greater than the string argument a.bmp

【讨论】:

  • 为了避免这种行为,您可以使用 compareToIgnoreCase 方法而不是 compareTo
  • @Syroezhkin 我坚信,这不是 OP 的意图。
猜你喜欢
  • 1970-01-01
  • 2022-10-15
  • 2022-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-11
  • 1970-01-01
  • 2013-03-22
相关资源
最近更新 更多