今天在学习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不久,有不正确的地方希望各位大鸟批评指正。