Sonar lint在for循环内的Java代码片段中报告可能的空点异常: for(File fileEntry:folder.listFiles()){ 。 }
任何ide如何解决问题? 这是方法:
private ArrayList<String> listFileNamesInFolder(final File folder) {
ArrayList<File> fileList = new ArrayList<File>();
ArrayList<String> fileNameList = new ArrayList<String>();
for (File fileEntry : folder.listFiles()) {
assertNotNull(fileEntry);
if (fileEntry.isDirectory()) {
listFileNamesInFolder(fileEntry);
} else {
if(fileEntry.getName().endsWith(".csv")) {
fileList.add(fileEntry);
fileNameList.add(fileEntry.getName());
setTestInfo(fileEntry.getName());
}
}
}
return fileNameList;
}
答案 0 :(得分:2)
listFiles
中File
的Javadoc表示它返回:
表示文件和目录的抽象路径名数组 此抽象路径名表示的目录。阵列将是 如果目录为空则为空。如果此抽象返回null pathname不表示目录,或者发生I / O错误。
因为这可以返回null
,您可能需要在迭代数组之前检查此值以防止NullPointerException
之类的内容:
File[] fileEntries = folder.listFiles();
if (fileEntries == null) {
// ...
} else {
for (final File fileEntry : fileEntries) {
// ...
}
}
当fileEntries
为null
时,您可以选择抛出异常,或返回空列表。