求教关于文件夹遍历的空指针问题

qq_22851351 2016-06-19 03:48:25
import java.io.File;

public class test {
public void out(File file){

File[] fs=file.listFiles();
for (int i = 0; i < fs.length; i++) {
if (fs[i].isDirectory() || !fs[i].getName().equals("Windows")) {
out(fs[i]);
}else if(fs[i].getName().equals("Windows")){
fs[i].getAbsolutePath();
break;
}else{
break;
}
}
/*for (File file2 : fs) {
if (file2.isDirectory() || !file2.getName().equals("Windows")) {
out(file2);
}else if(file2.getName().equals("Windows")){
file2.getAbsolutePath();
break;
}else{
break;
}
}*/
}
public static void main(String[] args) {
test t=new test();
File file=new File("C:");
t.out(file);
}
}
不管哪个循环都有问题……
...全文
178 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
awusoft 2016-06-22
  • 打赏
  • 举报
回复
if (fs[i].isDirectory() || !fs[i].getName().equals("Windows")) { 这里的 || 错了,应该是&&
awusoft 2016-06-22
  • 打赏
  • 举报
回复
listFiles这个方法返回的是null啊,要判断一下当前是文件,还是文件夹
soton_dolphin 2016-06-20
  • 打赏
  • 举报
回复
用递归不可以用到循环的,你需要又有个基本条件能够停止无限递归下去
  • 打赏
  • 举报
回复
当你递归到一个文件的时候,再次调用listFiles会返回空。你那个判断条件名字等于Windows是什么鬼,
qq_22851351 2016-06-19
  • 打赏
  • 举报
回复
换了盘符还是不行啊……
baidu_34630879 2016-06-19
  • 打赏
  • 举报
回复
换个盘符试试,不行就换个目录试试。盘符下面有很多隐藏文件你是没有访问权限的,特别是C盘
qq_22851351 2016-06-19
  • 打赏
  • 举报
回复
小白一个,搞不明白哪错了

62,625

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧