【问题标题】:Read Multiple Files in ascending order File Name按升序读取多个文件 文件名
【发布时间】:2014-08-14 23:14:59
【问题描述】:

我不知道发生了什么事。我想访问一个包含多个文件的目录:

 folder\\1.txt 2.txt 3.txt....

现在我想根据它们的出现来阅读它们我的意思是先到最低的只是我想按升序阅读它们! 我的代码是:

File f=new File("xxx");
File[] files = f.listFiles(); 
for (File ff : files) {

   if(ff.isFile()) {
   System.out.println(ff.toString());
   }
}

到目前为止,代码工作正常,但它会将文件作为

1.txt
10.txt
11.txt
9.txt
8.txt
...

所以出了什么问题,我想按升序顺序阅读它们

【问题讨论】:

  • 请记住,从 Files%#listFiles 返回的文件的顺序是未定义的。还要记住,在对字符串进行排序时,它们是按自然顺序排序的,这与数字顺序不同,您需要提供一个自定义比较器,将其传递给 Arrays.sort,它将按数字顺序对文件进行排序
  • 或者更简单地说,用足够多的前导零命名它们,以便它们自动正确排序,例如000000001.txt, 00000002.txt, ...

标签: java file


【解决方案1】:

只需按 Arrays.sort 排序:

        Arrays.sort(files, new Comparator<File>() {

            public int compare(File o1, File o2) {
                int n1 = getNum(o1.getName());
                int n2 = getNum(o2.getName());
                return n1 - n2;
            }
       }

        private int getNum(String name) {
            int i;
            // extract number from the file name here by doing some processes
            return i;
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 2016-06-14
    相关资源
    最近更新 更多