Java运行中的java.lang.NullPointerException异常

自己写了一个遍历文件夹下面所有文件的Java程序可是总是抛出异常,代码如下importjava.io.File;importjava.io.IOException;pub... 自己写了一个遍历文件夹下面所有文件的Java程序可是总是抛出异常,代码如下
import java.io.File;
import java.io.IOException;

public class traverse {
public static void tra(File path){
if(path == null){
return;
}
if(path.isDirectory()){
String[] files = path.list();
for(int i = 0; i < files.length;i++){
tra(new File(path,files[i]));
}
}else if(path.getAbsolutePath().endsWith(".mp3")){

System.out.println(path);
}
}
public static void main(String[] args) {
try{
File file = new File("D:\\");
tra(file);
}catch(Exception e){
e.printStackTrace();
}
}

}
这个异常并不是总是出现,而是已经打印出很多结果的时候会出现,为什么呢?
刚才有人和我说这是因为文件中有系统文件,不允许程序访问造成的,请问怎样才能避免呢?
展开
 我来答
紫薇参星
科技发烧友

推荐于2016-11-09 · 有一些普通的科技小锦囊
知道大有可为答主
回答量:5983
采纳率:92%
帮助的人:3600万
展开全部
因为目录有可能是空目录,即目录下没有文件,所以path.list() 返回为null,所以需要在for循环前判断一下,加一句if(files!=null)就行了。完整的程序如下:
import java.io.File;
import java.io.IOException;
public class traverse {
public static void tra(File path){
if(path == null){
return;
}
if(path.isDirectory()){
String[] files = path.list();
if(files!=null) //这里加一句
for(int i = 0; i < files.length;i++){
tra(new File(path,files[i]));
}
}else if(path.getAbsolutePath().endsWith(".mp3")){

System.out.println(path);
}
}
public static void main(String[] args) {
try{
File file = new File("D:\\");
tra(file);
}catch(Exception e){
e.printStackTrace();
}
}
}
国孝谭辛
2019-06-06 · TA获得超过3.8万个赞
知道大有可为答主
回答量:1.4万
采纳率:29%
帮助的人:649万
展开全部
空指针异常.当引用变量为null时试图访问对象的属性和方法,就会出现这种异常
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
li597600208man
2012-05-11 · 超过13用户采纳过TA的回答
知道答主
回答量:30
采纳率:0%
帮助的人:35.9万
展开全部
直接拉过去复制了下,运行正常。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式