java - 排序文件 'numerically' 而不是在 java 中按字母顺序排列

标签 java

我有一个文件夹,其中包含以时间戳命名的文件。

当我尝试浏览每个文件时,它会按字母顺序对它们进行排序并给出以下顺序:

/home/user/buffereddata/1
/home/user/buffereddata/100
/home/user/buffereddata/1000
/home/user/buffereddata/200
/home/user/buffereddata/2000
/home/user/buffereddata/300

但我希望它们像这样排序:

/home/user/buffereddata/1
/home/user/buffereddata/100
/home/user/buffereddata/200
/home/user/buffereddata/300
/home/user/buffereddata/1000
/home/user/buffereddata/2000

这是我的代码:

File file = new File(System.getProperty("user.home") + "/buffereddata");

if(file.exists()) {
  File[] fileArray = file.listFiles();
  Arrays.sort(fileArray);
  for(File f : fileArray) {
    System.out.println(f);
  }
}

是否有一些(最好是简单的)方法以我想要循环文件的方式循环文件?

最佳答案

Arrays.sort(fileArray, new Comparator<File>() {
    public int compare(File f1, File f2) {
        try {
            int i1 = Integer.parseInt(f1.getName());
            int i2 = Integer.parseInt(f2.getName());
            return i1 - i2;
        } catch(NumberFormatException e) {
            throw new AssertionError(e);
        }
    }
});

关于java - 排序文件 'numerically' 而不是在 java 中按字母顺序排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17339882/

相关文章:

java.sequence处理运算符?

java - 如何在 Intellij 中使用已编译的类

java - 从字节数组创建 16 或 32 位图像

java - 使用 DatagramSockets 的迭代 DNS 客户端

java - 接口(interface)上的注释会在实现中保留吗?

java - 生成随机的简单数学除法问题

java - 我对java的数据类型感到困惑。

java - 用 simpleJdbcInsert 替换重复项

java - 通知传输已完成超过 20 个字节 onCharactersitcChanged BLE

java - 无法获取连接,数据源无效 : "java.sql.SQLException: No suitable driver found for dataSource"