黑马程序员技术交流社区

标题: 谁能帮我分析一下这个迭代法遍历文件的异常? [打印本页]

作者: 王震阳老师    时间: 2012-11-28 22:37
提示: 该帖被管理员或版主屏蔽
作者: 黑马-项泽宇    时间: 2012-11-28 23:08
哥们,看来不用运行很长时间就会出错,有可能是权限问题。
我在细细看看你的代码琢磨琢磨。

作者: 黑马-项泽宇    时间: 2012-11-28 23:15
本帖最后由 黑马-项泽宇 于 2012-11-28 23:28 编辑

说说我的思路:
首先看了下楼主的代码,然后在showFiles函数入口处做了断点跟踪了下,发现会有null出现。
然后在 File[] file = dir.listFiles();后面加了SYSO进行输出对象,发现确实会有空值,可能是当该目录下为空的时候会返回空值。(是目录权限问题
所以加了一个非空判断,暂时解决了你的报错,仅供楼主参考。


作者: 奚华    时间: 2012-11-28 23:20
按照API上的说法应该是发生了IO错误导致了listFiles方法返回null,你看一下发生null值的那一个文件夹能不能访问,有没有权限访问
作者: 王震阳老师    时间: 2012-11-28 23:21
黑马-项泽宇 发表于 2012-11-28 23:08
哥们,看来不用运行很长时间就会出错,有可能是权限问题。
我在细细看看你的代码琢磨琢磨。
...

我运行了三四分钟才会看到。
作者: 张学永    时间: 2012-11-28 23:22
个人觉得错误出在System Volume Information这个文件夹上,
java没有对这个文件的访问权限。返回了一个null.你可以单独遍历一个盘符,应该都是到这句话就出异常。
作者: 黑马-项泽宇    时间: 2012-11-28 23:25
已经确定是文件夹权限的问题,有些文件夹不允许访问,你可以看一下你报错的这个信息之前的一个文件夹路径,看看能不能打开。。。。
作者: 王震阳老师    时间: 2012-11-28 23:26
谢谢上面的各位了,自己又查阅了一下API,是目录为空的问题导致的,因为当目录为空的时候,返回值也为空,所以导致空指针异常。
作者: 黑马-项泽宇    时间: 2012-11-28 23:29
王震阳 发表于 2012-11-28 23:26
谢谢上面的各位了,自己又查阅了一下API,是目录为空的问题导致的,因为当目录为空的时候,返回值也为空, ...

目录为空是其中一个原因,另一个原因是文件夹不允许访问。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2