鱼C论坛

 找回密码
 立即注册
查看: 3189|回复: 7

[已解决]空指针异常的错误,大伙帮我看看

[复制链接]
发表于 2018-3-5 10:05:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
代码如下

  1. package cn.xiaohong;

  2. import java.io.File;

  3. public class DiGuiFile {

  4.         public static void main(String[] args) {
  5.                 File srcFile = new File("E:/");
  6.                 searchFile(srcFile);
  7.         }

  8.         private static void searchFile(File srcFile) {
  9.                 if (srcFile.isFile()) {
  10.                         if (srcFile.getAbsolutePath().endsWith(".jpg")) {
  11.                                 System.out.println(srcFile.getAbsolutePath());
  12.                         }
  13.                 } else {
  14.                         File[] files = srcFile.listFiles();
  15.                         for (File f : files) {
  16.                                 searchFile(f);
  17.                         }
  18.                 }
  19.         }

  20. }
复制代码



报错如下:
  1. Exception in thread "main" java.lang.NullPointerException
  2.         at cn.xiaohong.DiGuiFile.searchFile(DiGuiFile.java:19)
  3.         at cn.xiaohong.DiGuiFile.searchFile(DiGuiFile.java:20)
  4.         at cn.xiaohong.DiGuiFile.searchFile(DiGuiFile.java:20)
  5.         at cn.xiaohong.DiGuiFile.main(DiGuiFile.java:9)
复制代码



我看不出哪里错了,大伙帮我看看
最佳答案
2018-3-5 15:56:46
你需要在
for (File f : files) {
      searchFile(f);
}
这段代码外面加一个为空判断
if(files != null){
   for (File f : files) {
      searchFile(f);
   }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-3-5 10:59:23 | 显示全部楼层
你这是什么语言的代码啊啊。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-5 12:55:55 | 显示全部楼层
mariomm 发表于 2018-3-5 10:59
你这是什么语言的代码啊啊。。

Java
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-5 15:56:46 | 显示全部楼层    本楼为最佳答案   
你需要在
for (File f : files) {
      searchFile(f);
}
这段代码外面加一个为空判断
if(files != null){
   for (File f : files) {
      searchFile(f);
   }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-5 18:41:05 | 显示全部楼层
achun 发表于 2018-3-5 15:56
你需要在
for (File f : files) {
      searchFile(f);

我试了下, 你的方法是可以的,非常厉害

我刚看了下,这个方法listFiles()返回的是文件和目录,如果目录为空,所以数组就是空的,所以是空指针异常是吗?但是我try...catch...貌似也是可以的

代码:
  1. package cn.xiaohong;

  2. import java.io.File;

  3. public class DiGuiFile2 {

  4.         public static void main(String[] args) {
  5.                 File srcFile = new File("E:/");
  6.                 searchFile(srcFile);
  7.         }

  8.         private static void searchFile(File srcFile) {
  9.                 if (srcFile.isFile()) {
  10.                         if (srcFile.getAbsolutePath().endsWith(".jpg")) {
  11.                                 System.out.println(srcFile.getAbsolutePath());
  12.                         }
  13.                 } else {
  14.                         try{
  15.                         File[] files = srcFile.listFiles();
  16.                                 for (File f : files) {
  17.                                 searchFile(f);
  18.                                 }
  19.                         }catch (Exception e){
  20.                                
  21.                         }
  22.                         
  23.                 }
  24.         }

  25. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-6 09:01:56 | 显示全部楼层
若余相思 发表于 2018-3-5 18:41
我试了下, 你的方法是可以的,非常厉害

我刚看了下,这个方法listFiles()返回的是文件和目录,如果目 ...

你加异常处理,那么后面的流程都结束了,要是1、E:/test1/test2/test3;2、E:/test1/test2/test4/test.txt;3、E:/test1/test2/test5;4、E:/test1/test2/test6/test.txt。假如是这种,如果你加try  catch,那么你在得到test3的时候就抛出了异常,那后面没有异常的test4、test6文件夹就不能处理了,所以最好的解决办法应该在外面加一个不为空的条件判断
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-6 11:16:20 | 显示全部楼层
achun 发表于 2018-3-6 09:01
你加异常处理,那么后面的流程都结束了,要是1、E:/test1/test2/test3;2、E:/test1/test2/test4/test.tx ...

有这种情况吗?你能举个例子给我看看吗?我没有做过开发,不是很能理解。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-12 09:14:01 | 显示全部楼层
你就按我上面的方法建几个目录和文件就可以了,然后运行你的代码就可以看到效果,然后再 把代码改成我说的那样再运行一遍,你就可以看到效果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-17 07:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表