QQ登录

只需一步,快速开始

登录 | 立即注册 | 找回密码

主题

帖子

荣誉

VIP至尊会员

Rank: 15Rank: 15Rank: 15

积分
405
查看: 488|回复: 7

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

[复制链接]
最佳答案
8 
累计签到:223 天
连续签到:1 天
若余相思 发表于 2018-3-5 10:05:27 4887 | 显示全部楼层 |阅读模式

马上注册加入鱼C,享用更多服务吧^_^

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

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);
   }
}
楼层
跳转到指定楼层
最佳答案
1 
累计签到:78 天
连续签到:2 天
mariomm 发表于 2018-3-5 10:59:23 | 显示全部楼层
你这是什么语言的代码啊啊。。
最佳答案
8 
累计签到:223 天
连续签到:1 天
若余相思  楼主| 发表于 2018-3-5 12:55:55 | 显示全部楼层
mariomm 发表于 2018-3-5 10:59
你这是什么语言的代码啊啊。。

Java
最佳答案
1 
累计签到:17 天
连续签到:1 天
achun 发表于 2018-3-5 15:56:46 | 显示全部楼层    本楼为最佳答案   
你需要在
for (File f : files) {
      searchFile(f);
}
这段代码外面加一个为空判断
if(files != null){
   for (File f : files) {
      searchFile(f);
   }
}
最佳答案
8 
累计签到:223 天
连续签到:1 天
若余相思  楼主| 发表于 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. }
复制代码
最佳答案
1 
累计签到:17 天
连续签到:1 天
achun 发表于 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文件夹就不能处理了,所以最好的解决办法应该在外面加一个不为空的条件判断
最佳答案
8 
累计签到:223 天
连续签到:1 天
若余相思  楼主| 发表于 2018-3-6 11:16:20 | 显示全部楼层
achun 发表于 2018-3-6 09:01
你加异常处理,那么后面的流程都结束了,要是1、E:/test1/test2/test3;2、E:/test1/test2/test4/test.tx ...

有这种情况吗?你能举个例子给我看看吗?我没有做过开发,不是很能理解。
最佳答案
1 
累计签到:17 天
连续签到:1 天
achun 发表于 2018-3-12 09:14:01 | 显示全部楼层
你就按我上面的方法建几个目录和文件就可以了,然后运行你的代码就可以看到效果,然后再 把代码改成我说的那样再运行一遍,你就可以看到效果

发表回复

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

本版积分规则

关闭

小甲鱼强烈推荐 上一条 /1 下一条

    移动客户端下载(未启用)
    微信公众号

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备11014136号

Copyright 2018 鱼C论坛 版权所有 All Rights Reserved.

Powered by Discuz! X3.3 Copyright
© 2001-2018 Comsenz Inc.    All Rights Reserved.

小黑屋|手机版|Archiver|鱼C工作室 ( 粤公网安备 44051102000370号 | 粤ICP备11014136号

GMT+8, 2018-6-21 12:55

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