Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中如何列出目录中的文件?_Java_File - Fatal编程技术网

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

Java中如何列出目录中的文件?,java,file,Java,File,我有一个目录,我需要从中读取txt文件 代码如下: try { File dir = new File(directoryName); File[] files = dir.listFiles(new FilenameFilter() { @Override public boolean accept(File dir, Stri

我有一个目录,我需要从中读取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如何在内部列出文件?关于这一点,
listFiles
FilenameFilter
的文档不清楚。

2.从上面的测试用例来看,Java在列出文件时似乎有一些特定于操作系统的东西。这是什么?如何显示它

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

这一点非常清楚:

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


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

如果文档中没有任何内容,则意味着无法保证顺序。如果您需要特定的顺序,你得自己整理这些文件谢谢。但我已经多次运行相同的测试(在Windows上至少运行了500次,在Linux上可能运行了50次)。顺序总是一样的(如前所述)。是不是有什么操作系统特有的东西迫使文件以特定的顺序一次又一次地返回?@Sriram事实上,Java所做的只是要求操作系统提供文件列表。无论操作系统返回它们的顺序是什么,它们都将被保留。大多数文件系统可能会始终以相同的顺序返回相同的目录,但不能保证所有文件系统都会这样做。而且也不能保证操作系统不会重新排列它们。而且也不能保证所有操作系统都会以相同的顺序返回它们。所以基本上:不要依赖任何命令,即使你测试了它。