关于盘符根目录的递归遍历,如果稍微不注意,就会出现空指针异常问题,你们都知道为什么吗?举个例子:如果是要遍历 File f = new File("c:\\")
我们都知道,C盘下,有很多系统的文件,那些文件的读取,都是需要管理员权限,或者是,根本就不让你写,不让你读,也不让你删除,还有一部分是不可见的,那么对于这些问题的遍历文件夹呢,通常,我们的判断条件要非常谨慎才行,不然很容易就会报出空指针异常,具体的代码如下:
package com.heima.test;
import java.io.File;
public class TestDemo01 {
public static void main(String[] args) {
File f = new File("c:\\");
getPics(f);
}
/**
* 这个方法是用于获取文件夹及子文件夹的下所有图片
* 1,返回参数:void
* 2,File对象
*/
public static void getPics(File path){
//第一步:想办法获取到给定的文件夹下的所有文件和文件夹对象
//path.listFiles()这个方法的底层代码,很有可能会返回一个null,如果返回是的null,那么使用null来调用方法的话,就会出现空指针异常
File[] files = path.listFiles();
if(files != null){ //判断返回的不为null
for(File f: files){
//如果是目录(文件夹),就递归,如果是文件 就判断是否是图片文件
if(f.isDirectory() && !f.isHidden()){ //判断是文件夹并且是可见的
getPics(f);
}else if(f.isFile() && f.getName().endsWith(".jpg")){
System.out.println(f);
}
}
}
}
}
|
|