文件未正确排序

时间:2015-11-08 12:50:31

标签: java list file

我知道我的标题有点误导,但我不确定如何把它放进去。

基本上我有一个文件夹,其图像名称为:0.png高达100.png。当我尝试使用以下方法加载它们时:

 public static void buildImageList() {
    Main.log("Building list of image files...");
    File[] files = new File(Constants.getImageLocation()).listFiles();
    int id = 0;
    for (File file : files) {
        if (file.isDirectory()) {
            continue;
        }
        if (!file.getName().contains(".png") && !file.getName().contains(".jpg") && !file.getName().contains(".jpeg") && !file.getName().contains(".PNG")) {
            continue;
        }
        imageFiles.add(new FileImage(id, fileToByteArray(file)));
        id++;
    }
    Main.log("Found " + imageFiles.size() + " images in the folder!");
}

我得到的文件不按有序顺序:0.png,1.png,10.png,11.png等等。

我需要改变什么才能得到0.png,1.png,2.png,3.png?

2 个答案:

答案 0 :(得分:0)

最简单的方法是使用:

<?php
include 'db.php';
$query="select * from sc_products";
$result = $mysqli->query($query) or die($mysqli->error.__LINE__);

$arr = array();

if($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        $arr[] = $row;
    }
}
echo $json_response = json_encode($arr);
?>

java.io.File实现Comparable接口,按字典顺序比较路径名。订购实际上取决于操作系统。如果您需要任何自定义排序逻辑,您可以为Arrays#sort()方法提供自定义比较器:

Arrays.sort(files);

答案 1 :(得分:0)

感谢您的指导,我已使用以下代码修复了它:

 Arrays.sort(files, (o1, o2) -> {
        final int id1 = Integer.parseInt(o1.getName().substring(0, o1.getName().indexOf(".")));
        final int id2 = Integer.parseInt(o2.getName().substring(0, o2.getName().indexOf(".")));
        final int result = Integer.compare(id1, id2);
        return result != 0 ? result : (id1 - id2);
    });