0

我正在使用 apache.commons jar 从文件夹中仅读取最新的 10 个文件(按创建日期)

这是列出所有文件,但我不知道为什么即使在完成读取 10 个文件后它也没有停止

这是我的代码,但我不知道为什么它没有停止

import org.apache.commons.io.comparator.LastModifiedFileComparator;
import java.io.File;
import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        File dir = new File("D:\\MyFolder");
        File[] files = dir.listFiles();

        Arrays.sort(files, LastModifiedFileComparator.LASTMODIFIED_REVERSE);
        for (int i = 0; i < files.length; i++) {

             if(files.length==10)
             {
             // return;
                 break ; 
             }

            File file = files[i];
            System.out.printf(file.getName()+"\n");


        }


    }
}
4

3 回答 3

3

改变

if(files.length==10)

if(i == 10)

您总是在比较 File 数组的长度。

于 2012-04-20T14:58:07.243 回答
3

错误的条件

for (int i = 0; i < files.length; i++) {

        File file = files[i];
        System.out.printf(file.getName()+"\n");
    }

应该

for (int i = 0; i < files.length && i < 10; i++) {

        File file = files[i];
        System.out.printf(file.getName()+"\n");
}
于 2012-04-20T14:58:13.797 回答
1

条件应该是if (i == 10),因为files.length不会随着循环的每次迭代而改变。更好的是,更改您的代码如下:

int end = Math.min(files.length, 10);
for (int i = 0; i < end ; i++) {
    // ... your code
}

这将计算一次结束索引,并避免在循环中重新计算。

于 2012-04-20T14:58:06.933 回答