无法从java中的串联文件夹中读取文件

无法从java中的串联文件夹中读取文件,java,io,Java,Io,我正在尝试将文件夹中的文件读取到java,我找到了这个片段并使用了它 File folder = new File("Z.."); File[] listOfFiles = folder.listFiles(); for (int i = 0; i < listOfFiles.length; i++) { File file = listOfFiles[i]; if (file.isFile() && file.getName().en

我正在尝试将文件夹中的文件读取到java,我找到了这个片段并使用了它

File folder = new File("Z..");
    File[] listOfFiles = folder.listFiles();



for (int i = 0; i < listOfFiles.length; i++) {
      File file = listOfFiles[i];
      if (file.isFile() && file.getName().endsWith(".txt")) {
       String content = FileUtils.readFileToString(file);

    }
除了不能按顺序检索文件外,这一切正常。我有编号为文件0、文件1、文件2…..文件10的文件,以及它如何检索文件0、文件1、文件10和文件2,我应该如何以适当的顺序检索它。
我应该用别的东西吗?我是新来的

正在按字母顺序读取文件。按字母顺序,10排在2之前,因为两者中的第一个字母都是首先比较的,即“1”和“2”


要解决这个问题,您可以解析数字,将每个数字链接到原始文件名,然后对数字进行排序,并以新的顺序读取它们

这里有一个使用自定义比较器对文件数组进行排序的好例子:

您必须修改比较器的返回,使其符合

return f1.getName().compareTo(f2.getName());
它应该正是你想要的

如果所有文件都已编号,则可能需要将文件名作为整数进行比较:

return Integer.valueOf(f1.getName()).compareTo(Integer.valueOf(f2.getName()));

你的问题只是订单吗?如果是这样的话,您可能应该先对数组进行排序,然后再处理它,因为这正是底层操作系统返回数组的方式,按词汇排序。如果这不是你想要的顺序,你需要得到所有的文件名,并按照你想要的方式对它们进行排序。你的答案的第一段是可以的,尽管从技术上讲它是按字典顺序排列的。第二部分。。。没有那么多。你只需要用一个比较器对数组进行排序,这个比较器可以产生你想要的顺序。我认为我的解决方案比创建一个比较器更简单,它可以按数字顺序对所有字符串进行排序,而不是按字母顺序。