java遍历全盘文件时出现空指针异常

今天在学习java流这部分时,看到File类这块,下面有一个方法listFiles(); File[] listFiles() 返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。 在帮助文档中看到一段话:"如果此抽象路径名不表示一个目录,那么此方法将返回 null。否则返回一个 File 对象数组,每个数组元素对应目录中的每个文件或目录"
  
  
package IO_File;
 
import java.io.File;
 
public class TravelFile {
public static void main(String[] args) {
//1.获取路径
File f = new File("f:"+ File.separator);
//2.调用方法完成查找
FindTravleMethod(f);
}
public static void FindTravleMethod(File f){
if(f.isFile()){
System.out.println(f.getName());
return ;
}
/***f:可能是文件 可能是目录
* 1.Directory
*/
File fs[] = f.listFiles();
//if(fs != null){
 
for(File slist : fs){
/***
* 文件或者目录
* **/
 
//if(slist.isDirectory() && !slist.isHidden()){
System.out.println(slist.getAbsolutePath());
FindTravleMethod(slist);
//}
}
//}
 
}
}
 
上面代码会报空指针异常:经过查资料,不是因为文件时隐藏文件的原因,是文件没有权限,所以返回null;才会报空指针异常,当然在帮助文档中提到的返回null,我个人觉得不是同一个原因,我在代码中加入了判断是不是隐藏文件,代码不会报错,当然在win下没有访问权限的,除了c盘,其他盘的都应该是隐藏文件吧,我在代码第32行判断返回值与39行判断是不是隐藏文件,代码会正常执行。我在帮助文档中没找到关于这里是不是因为权限问题,因此我特意用普通用户,把路径改为系统盘下执行,也会报空指针异常。因此才的出结论为没有权限。
   
   
c:\Documents and Settings
Exception in thread "main" java.lang.NullPointerException
at IO_File.TravelFile.FindTravleMethod(TravelFile.java:34)
at IO_File.TravelFile.FindTravleMethod(TravelFile.java:46)
at IO_File.TravelFile.main(TravelFile.java:14)


小白一枚,刚学java不久,有不正确的地方希望各位大鸟批评指正。










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值