我做了下面的程序,它读取目录中的所有文件。所有文件名都由数字组成(例如,10023134.txt)。
File dir = new File(directoryPath);
File[] files = dir.listFiles();
for (File file : files)
try {
if ( !file.exists())
continue;
else if (file.isFile()) {
// some process
}
} catch (Exception e) {}我想知道默认情况下,目录中的文件是按什么顺序读取的。
程序似乎既不按数字顺序读取文件,也不按创建日期顺序读取文件。
发布于 2014-06-30 06:52:31
如JavaDoc中所指定的
不能保证结果数组中的名称字符串将以任何特定的顺序出现;它们尤其不能保证按字母顺序显示。
如果你想把它们分类,你就得自己分类。
请注意,如果使用默认排序进行排序,则仍然会根据操作系统获得不同的结果。再次来自JavaDoc
此方法定义的排序取决于基础系统。在UNIX系统上,字母大小写在比较路径名方面很重要;而在Microsoft系统上则不是。
发布于 2014-06-30 06:52:00
在OS默认情况下,文件的顺序很可能是(或列表中立的)顺序,这取决于操作系统如何将文件列表返回给Java。
无法保证文件可以按顺序返回。
您可以在阅读列表之后使用Arrays.sort(T[] Comparator<? super T> c)对其进行排序。
发布于 2014-06-30 06:57:04
这些文件按照操作系统的自然顺序排序。这可能是创造秩序。如果希望对列表进行排序,可以调用
File[] files = Arrays.sort(dir.listFiles())对于另一种顺序,请随意使用您自己的Comparator。致以问候。
https://stackoverflow.com/questions/24484361
复制相似问题