开发者社区> 问答> 正文

java遍历文件时提示空指针错误

import java.io.*; 
public class FileList 
{ 
public static int fileTotalNum = 0;    //文件总数 
public static int directoryNum = 0;    //文件夹总数 

public void FList(File f) 
{ 
String[] s = f.list(); 
fileTotalNum+=s.length; 

for(int i = 0;i < s.length;i++) 
{ 
File filelist = new File(f.getPath()+s[i]); 
if(filelist.isDirectory()) 
{ 

directoryNum++; 
FList(filelist); 
} 
} 
} 

public static void main(String[] args) 
{ 
File file = new File("C:\\"); 
FileList fl = new FileList(); 
fl.FList(file); 
System.out.println("一共有文件:"+fileTotalNum); 
} 
} 



执行以上代码后提示空指针错误,具体如下: 
Exception in thread "main" java.lang.NullPointerException 
        at FileList.FList(FileList.java:10) 
        at FileList.FList(FileList.java:19) 
        at FileList.main(FileList.java:28)

大家,知道,这是为什么吗?谢谢了

展开
收起
长安归故里. 2020-01-08 16:32:43 1067 0
1 条回答
写回答
取消 提交回答
  • 是在这行报错的: fileTotalNum += s.length; 要先判断一下: if (s != null)

    原因: 因为遍历到C盘下的“System Volume Information”目录时,这是每个分区下都有的系统目录,用户没有访问权限,所以调用listFiles方法会返回null。

    JDK文档中关于listFiles方法: 抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件和目录。如果目录为空,那么数组也将为空。如果抽象路径名不表示一个目录,或者发生 I/O 错误,则返回 null。

    PS: 要养成良好的编码习惯,这是刚开始入行时就需要放在头一位的任务,技术可以放在其次,学习的时间长着呢。

    2020-01-08 16:33:09
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载