鱼C论坛

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

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

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

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

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

x
代码如下
package cn.xiaohong;

import java.io.File;

public class DiGuiFile {

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

        private static void searchFile(File srcFile) {
                if (srcFile.isFile()) {
                        if (srcFile.getAbsolutePath().endsWith(".jpg")) {
                                System.out.println(srcFile.getAbsolutePath());
                        }
                } else {
                        File[] files = srcFile.listFiles();
                        for (File f : files) {
                                searchFile(f);
                        }
                }
        }

}


报错如下:
Exception in thread "main" java.lang.NullPointerException
        at cn.xiaohong.DiGuiFile.searchFile(DiGuiFile.java:19)
        at cn.xiaohong.DiGuiFile.searchFile(DiGuiFile.java:20)
        at cn.xiaohong.DiGuiFile.searchFile(DiGuiFile.java:20)
        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...貌似也是可以的

代码:
package cn.xiaohong;

import java.io.File;

public class DiGuiFile2 {

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

        private static void searchFile(File srcFile) {
                if (srcFile.isFile()) {
                        if (srcFile.getAbsolutePath().endsWith(".jpg")) {
                                System.out.println(srcFile.getAbsolutePath());
                        }
                } else {
                        try{
                        File[] files = srcFile.listFiles();
                                for (File f : files) {
                                searchFile(f);
                                }
                        }catch (Exception e){
                                
                        }
                        
                }
        }

}
想知道小甲鱼最近在做啥?请访问 -> 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-11-15 07:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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