我正在使用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");
}
}
}
答案 0 :(得分:3)
更改
if(files.length==10)
到
if(i == 10)
您总是在比较文件数组的长度。
答案 1 :(得分: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");
}
答案 2 :(得分:1)
条件应该是if (i == 10)
,因为files.length
不会随着循环的每次迭代而改变。更好的是,按如下方式更改代码:
int end = Math.min(files.length, 10);
for (int i = 0; i < end ; i++) {
// ... your code
}
这将计算结束索引一次,并避免在循环中重新计算。