我正在使用此代码在给定目录中递归搜索特定文件模式:
if (file.isDirectory()) {
System.out.println("Searching directory ... "
+ file.getAbsoluteFile());
if (file.canRead()) {
System.out.println("Can read...");
if (file.listFiles() == null) {
System.out.println("yes it is null");
}
for (File temp : file.listFiles()) { // Problemetic line
if (temp.isDirectory()) {
search(temp);
} else {
// code to find a file
}
}
}
上面的代码像这样输出我(我也得到异常):
Searching directory ... C:\swsetup\SP46840\Lang\zh-TW
Can read...
Searching directory ... C:\System Volume Information
Can read...
yes it is null
例外是:
Exception in thread "main" java.lang.NullPointerException
at Demo.search(Demo.java:61)
at Demo.search(Demo.java:63)
在我的代码中,该行指向 : (file.listFiles())
,因为它试图从“系统卷信息”等系统目录中获取文件列表。我假设因为它是一个系统目录,所以可能会发生一些我不知道的问题。
我的问题是:
- 如何处理这种情况,以便
NullPointerException
我的foreach
循环继续发生? - 或者更好地如何首先避免异常(例如通过检查它是否是系统目录等)?
有人可以指导我吗?注意:这发生在 Windows XP 中(几个月前我在 Windows 7 中进行过测试,但我认为那里没有出现问题)