为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

www说 2019-03-21 18:15:19
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.NullPointerExceptionat FileList.FList(FileList.java:10)at FileList.FList(FileList.java:19)at FileList.main(FileList.java:28)大家,知道,这是为什么吗?谢谢了
查看完整描述

3 回答

?
回首忆惘然

TA贡献1847条经验 获得超11个赞

if(f == null || !f.exists) {
return;
}

String[] s = f.list();

if(s == null || s.length == 0) {
return;
}

fileTotalNum+=s.length;


查看完整回答
反对 回复 2019-04-28
?
POPMUISE

TA贡献1765条经验 获得超5个赞

是在这行报错的:
fileTotalNum += s.length;
要先判断一下:
if (s != null)

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

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

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


查看完整回答
反对 回复 2019-04-28
  • 3 回答
  • 0 关注
  • 1078 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号