我有一个错误说“线程中的异常”主“java.lang.NullPointerException”。请考虑下面的代码。
public static void main(String args[]){
String dir_name = "C:\\temp\\"; //Or another directory
File dir = new File(dir_name);
File[] dir_list = dir.listFiles();
for(int i=0;i<dir_list.length;++i) {
System.out.println(dir_list[i].getName())
}
}
我有什么遗失的吗?我需要一些指导。
答案 0 :(得分:3)
public static void main(String args[]){
String dir_name = "C:\\temp\\"; //Or another directory
File dir = new File(dir_name);
if(dir.exists() && dir.isDirectory()){
File[] dir_list = dir.listFiles();
for(int i=0;i<dir_list.length;++i) {
System.out.println(dir_list[i].getName());
}
}
}
答案 1 :(得分:2)
我猜你的问题是dir.listFiles()
返回null
因为dir
不被Java视为有效目录。如the documentation中所述:
如果此抽象路径名不表示目录,或者发生I / O错误,则返回null。
因此,您的Java应用程序可能无权访问C:\Temp\
,或者字符串C:\\Temp\\
被误解为文件对象的参数,或者只是它不存在。我不知道,但是你应该检查是否dir == null
并在发生这种情况时抛出异常。并找出无法访问C:\temp\
的原因。
作为一个检查,我只能关注@ZhenxiaHoa代码示例,并添加抛出异常以使该错误脱颖而出:
if(dir.exists() && dir.isDirectory()){
File[] dir_list = dir.listFiles();
for(int i=0;i<dir_list.length;++i) {
System.out.println(dir_list[i].getName());
}
} else {
throw IOException("Can't access directory");
}
答案 2 :(得分:1)
null表示存在错误。