Java中列出的目录中的文件如何?

时间:2015-08-10 10:23:10

标签: java file

我有一个目录,我需要从中读取txt文件。

以下是代码:

            try {
                File dir = new File(directoryName);
                File[] files = dir.listFiles(new FilenameFilter() {
                    @Override
                    public boolean accept(File dir, String name) {
                        return name.endsWith(".txt");
                    }
                });
                for (File xmlfile : files) {
System.out.println("File name:" + xmlfile.getAbsolutePath());
                }
            } catch (Exception e) {
                System.out.println(e);
            }  

因此创建了一个测试用例:
1.名为" content"的目录。创建了。它填充了两个文件:1.txt和2.txt。这些是按照与提到的顺序相同的顺序创建的 2.其中一个文件1.txt被重命名为sriram.txt(比如说)。

以下是我得到的结果:
1.在Windows上,文件始终按字母顺序列出 2.在Linux上,文件按时间戳列出。在Ubuntu上,文件以时间戳的相反顺序列出。在其他基于Debian的发行版上,文件按时间戳的升序列出。

我的问题:
1. Java如何在内部工作以列出文件? listFilesFilenameFilter的文档不清楚。
2.从上面的测试案例中可以看出,在列出文件时,Java正在寻找特定于操作系统的东西。这是什么以及如何显示它?

2 个答案:

答案 0 :(得分:7)

The documentation绝对清楚:

  

无法保证结果数组中的名称字符串将以任何特定顺序出现;特别是,它们不会保证按字母顺序出现。

(在大多数情况下,当您需要以给定顺序显示文件名时,您通常也需要实施其他订单,因此实际上您不必通过手动对列表进行排序而损失太多。 )

答案 1 :(得分:0)

您不能依赖任何系统上的任何订单。如果您在订单中需要它们,则需要对它们进行排序。