遍历磁盘根目录的时候会遇到NullPointerException
原因是遍历到了隐藏文件
解决办法:加入if(files!=null&&files.length>0){…遍历},用if判断文件是否为空,并且一定要把判断是否为空写在运算符的左边,不然会因为短路而无法判断为空。
public class PrintFilesTest {
public static void main(String[] args) {
printFileName(new File("C:\\"));
}
public static void printFileName(File dirFile){
if(dirFile==null)
{return;}
if(!dirFile.isDirectory()){//排除此文件不是文件夹
System.out.println(dirFile.getAbsolutePath());
return;
}
File[] files = dirFile.listFiles();//数组保存所有文件,再通过for循环遍历
if(files!=null&&files.length>0){//判断是否为空一定要写在左边
for (File file : files) {//遍历此目录下所有文件
if(file.isFile()){
System.out.println(file.getAbsolutePath());
}
else printFileName(file);//如果是目录就再次调用此方法遍历
}
}}