首页 新闻 搜索 专区 学院

为什么报空指针异常呢?

0
悬赏园豆:10 [待解决问题]

public class HelloWorld {
public static void main(String[] args) throws IOException {
File[] files = File.listRoots();
for (File file :
files) {
showDirAndFile(file);
}
}
public static void showDirAndFile(File f){
File[] files = f.listFiles();
for (File temp_f : files) {
boolean file = temp_f.isFile();
if (file){
System.out.print(temp_f.getName()+' ');
}else{
showDirAndFile(temp_f);
}
}
System.out.println(f.getName());
}
}

zeronexyz的主页 zeronexyz | 初学一级 | 园豆:186
提问于:2021-07-31 10:51
< >
分享
所有回答(2)
0

public static void main(String[] args) {
File[] files = File.listRoots();
for (File file :
files) {
showDirAndFile(file);
}
}
public static void showDirAndFile(File f){
File[] files = f.listFiles();
if(files!=null){ //这里加个判断
for (File temp_f : files) {
boolean file = temp_f.isFile();
if (file){
System.out.print(temp_f.getName()+' ');
}else{
showDirAndFile(temp_f);
}
}
System.out.println(f.getName());
}

}
南宫懿痕 | 园豆:233 (菜鸟二级) | 2021-07-31 11:00

这个文本编辑器格式有点恶心啊

支持(0) 反对(0) 南宫懿痕 | 园豆:233 (菜鸟二级) | 2021-07-31 11:01

@南宫懿痕: 你可以这样编辑:

public static void main(String[] args) {
	File[] files = File.listRoots();
	for (File file : files) {
		showDirAndFile(file);
	}
}
	
public static void showDirAndFile(File f){
	File[] files = f.listFiles();
	if(files!=null){ //这里加个判断
		for (File temp_f : files) {
			boolean file = temp_f.isFile();
			if (file){
				System.out.print(temp_f.getName()+' ');
			}else{
				showDirAndFile(temp_f);
			}
	}
	System.out.println(f.getName());
}
支持(0) 反对(0) 会长 | 园豆:10954 (专家六级) | 2021-07-31 11:51

@会长: 健壮性可以实际项目中可以,实际上我这边可以得到files的对象。不知道怎么还是会有空指针。

支持(0) 反对(0) zeronexyz | 园豆:186 (初学一级) | 2021-07-31 13:40
0

出现空指针是因为文件目录的访问都是有权限控制的,你当前登录的用户对于文件目录权限不足,所以读取的listFiles是null的,才会出现空指针异常,例如我用的windows,就读取不到C:$Recycle.Bin\S-1-5-18这个目录下的东西

思无 | 园豆:286 (菜鸟二级) | 2021-09-30 10:18
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册