下面的代码对从目录读取的文件数组进行排序。唯一的问题是,如果文件夹为空,则会出现空指针异常。我尝试了几种不同的方法,首先检查文件夹是否为空,然后执行下面的代码,但它们都使用了 if 语句,使该代码超出了范围。有没有办法检查目录是否为空以及是否跳过此代码?
//sort array listOfFiles by time (oldest to newest)
File folder = new File(dbBackupLocation + "/" + dbHost);
File[] listOfFiles = folder.listFiles();
Arrays.sort(listOfFiles, new Comparator<File>() {
@Override
public int compare(File f1, File f2) {
return Long.valueOf(f1.lastModified()).compareTo(f2.lastModified());
}
});
编辑:NullPointerException 在线 Arrays.sort(listOfFiles, new Comparator<File>() {
我使用了 Elliott Frisch 代码:
File folder = new File(dbBackupLocation + "/" + dbHost);
File[] listOfFiles = folder.listFiles();
if (listOfFiles != null && listOfFiles.length > 0) {
// The array isn't empty.
Arrays.sort(listOfFiles, new Comparator<File>() {
@Override
public int compare(File f1, File f2) {
return Long.valueOf(f1.lastModified())
.compareTo(f2.lastModified());
}
});
}
但是当我尝试使用 listOfFiles 时,例如: for(File s : listOfFiles) { i++; }
我显然正在取消引用它?
最佳答案
如果我理解你的话,你想要类似的东西
File folder = new File(dbBackupLocation + "/" + dbHost);
File[] listOfFiles = folder.listFiles();
if (listOfFiles != null && listOfFiles.length > 0) {
// The array isn't empty.
Arrays.sort(listOfFiles, new Comparator<File>() {
@Override
public int compare(File f1, File f2) {
return Long.valueOf(f1.lastModified())
.compareTo(f2.lastModified());
}
});
}
关于java - 检查文件夹是否为空且没有引用问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25043935/