A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© harborbest 中级黑马   /  2013-4-27 14:34  /  1307 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 harborbest 于 2013-4-27 21:23 编辑

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);
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)

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

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

1 个回复

倒序浏览
本帖最后由 java冬冬 于 2013-4-27 15:09 编辑

看看程序的这一行: fileTotalNum += s.length;
首先要先判断一下: if (s != null)
JDK文档中关于listFiles方法: 抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件和目录。
如果目录为空,那么数组也将为空。如果抽象路径名不表示一个目录,或者发生 I/O 错误,则返回 null。
{:soso_e152:}
修改的代码如下:
  1. import java.io.*;
  2. public class FileList
  3. {
  4. public static int fileTotalNum = 0; //文件总数
  5. public static int directoryNum = 0; //文件夹总数

  6. public void FList(File f)
  7. {
  8. String[] s = f.list();
  9. if (s != null)
  10. {
  11. fileTotalNum+=s.length;

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

  17. directoryNum++;
  18. FList(filelist);
  19. }
  20. }
  21. }
  22. }

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

复制代码
运行结果:

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马