封装了一个盘符的File对象调用listFiles()方法问题,求教

[复制链接]
查看11 | 回复9 | 2021-1-27 06:32:09 | 显示全部楼层 |阅读模式
关于返回一个盘下所有文件的问题,我用了一个简单的递归调用来实现,但是在调试的时候出现了问题:
这是传入一个盘符的情况:


结果:

直接报空指针异常,来源于showAllfiles(File)方法的File数组,也就是说根本就没有获取到数据;
这是传入一个文件夹的情况:


结果:

正常运行;

。。。。。。。。。楼主百思不得原因,又试了试在main()主函数中由封装了盘符的File对象直接调用listFiles(File)方法,结果成功返回,然后楼主又在mian()创建了一个新的File对象引用,将封装了盘符的File对象的引用赋值给它,再调用listFiles()方法,依然成功,也就是说,问题应该是出现在调用方法的问题上,但是实在不知道这中间有何区别,只好请教各位,这到底是什么原因呢?
分 -->
回复

使用道具 举报

千问 | 2021-1-27 06:32:09 | 显示全部楼层
别发图片啊。发原码看看啊
回复

使用道具 举报

千问 | 2021-1-27 06:32:09 | 显示全部楼层
引用1楼RedFlag_ing的回复:别发图片啊。发原码看看啊
图片里就是全部源码了,就是一个递归,没有其他源码了

回复

使用道具 举报

千问 | 2021-1-27 06:32:09 | 显示全部楼层
引用2楼zuyunfanwoerzi的回复:Quote: 引用1楼RedFlag_ing的回复:
别发图片啊。发原码看看啊

图片里就是全部源码了,就是一个递归,没有其他源码了


看着没问题。就是想运行下。
回复

使用道具 举报

千问 | 2021-1-27 06:32:09 | 显示全部楼层
文件夹访问权限问题
回复

使用道具 举报

千问 | 2021-1-27 06:32:09 | 显示全部楼层
盘符下面有一些隐藏文件夹是没有权限访问的,也就没法判断是不是文件夹,要判断是不是文件,不是文件就是文件夹。
回复

使用道具 举报

千问 | 2021-1-27 06:32:09 | 显示全部楼层
楼主解决了吗?我刚刚做的时候也遇到了,是否就是上面所说的:访问的权限不够
回复

使用道具 举报

千问 | 2021-1-27 06:32:09 | 显示全部楼层
应该是权限问题
回复

使用道具 举报

千问 | 2021-1-27 06:32:09 | 显示全部楼层
判断下files是否为空,不是空就for,应该是e盘有空文件夹
回复

使用道具 举报

千问 | 2021-1-27 06:32:09 | 显示全部楼层
因为深层遍历盘符时,盘符下面有系统级别的目录,java可以获取到该目录的名称和对象,但是该目录文件对象在调用list或listFiles方法时,因为权限问题无法访问内部文件,
固方法返回的文件对象数组无法创建,那么for循环的变量名files无数组实体指向,则传入递归方法的onefile也就无对象实体指向,就会发生控制针异常,这里的空指针就是文件对象数组无指向导致的,简单的说,循环遍历目录是碰到系统级别目录,java无权限对系统级别目录进行访问,出现异常,方法弹栈。
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行