为了账号安全,请及时绑定邮箱和手机立即绑定

麻烦会的仔细看看,求解答

package com.fwh;

import java.io.File;

public class demo {
 public static void lis(File dr) {
  /*String[] a=dr.list();
  for (String string : a) {
   System.out.println(string);
  }*/
  File[] a=dr.listFiles();
  for (File A : a) {
   if(A.isDirectory()) {
    lis(A);//特别注释!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   }else {
    System.out.println(A);
   }
  }
 }
}

这是我照着视频写的,运行没有问题,但是结果不是所有的文件都出来,结果是这样的,哪个地方错了?

d:\我要好好学习\你不是.txt
d:\我要好好学习\啊大概个\不是的信件\啊会尽快.txt
d:\我要好好学习\啊大概个\按哈哈去.txt
d:\我要好好学习\我是.txt

正在回答

7 回答

   System.out.println(A)你把这个加到if语句块里去。else语句是非空文件夹才会输出。仔细想想。

0 回复 有任何疑惑可以回复我~

File[] a=dir.listFiles();

if(a.length>0&&a!=null) {

for (File file : a) {

if(file.isDirectory()){

lisDirectory(file);

}

//在此处添加判断  如果遍历到不包含文档的文件夹,

//但包含有另一空文件夹时 打印输出文件夹的目录

else if(file!=null) {

for (File file2 : a) {

System.out.println(file2);

};

}else{

System.out.println(file);

}

}

}

//如果没添加判断 就只会输出含有文档名的路径    不会输出只含有空文件夹的路径


0 回复 有任何疑惑可以回复我~

listDirectory是方法名,java中并没有这个方法

0 回复 有任何疑惑可以回复我~

你的问题应该是空文件目录没有输出目录吧!

需要增加一个files!=null,但是files.length==0的情况,表示当前目录里面没有文件存在了,就打印当前空文件夹的目录,也就是直接输出dir目录

if(files!=null&&files.length>0)

for (File file : files) {

if(file.isDirectory())

fileListDirectory(file);

else

System.out.println(file);

}

else

System.out.println(dir);


0 回复 有任何疑惑可以回复我~

这递归写的是正确的,没有全部输出,是因为你只判断了当前文件为File的情况下输出.

只要在dir的判断中,添加输出语句System.out.println("dir_:"+A.getName());,就都有了。

http://img1.sycdn.imooc.com//5a7bec810001345406310183.jpg

0 回复 有任何疑惑可以回复我~

应该列举出的是所有目录的值


0 回复 有任何疑惑可以回复我~

 lis(A);//特别注释!!!!!!!!!!!!!!!!!!!!!!!!!!!!


要用listDirectory(A);方法

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

麻烦会的仔细看看,求解答

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信