慕先生9431606
2018-01-25 11:43
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
System.out.println(A)你把这个加到if语句块里去。else语句是非空文件夹才会输出。仔细想想。
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);
}
}
}
//如果没添加判断 就只会输出含有文档名的路径 不会输出只含有空文件夹的路径
listDirectory是方法名,java中并没有这个方法
你的问题应该是空文件目录没有输出目录吧!
需要增加一个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);
这递归写的是正确的,没有全部输出,是因为你只判断了当前文件为File的情况下输出.
只要在dir的判断中,添加输出语句System.out.println("dir_:"+A.getName());,就都有了。
应该列举出的是所有目录的值
lis(A);//特别注释!!!!!!!!!!!!!!!!!!!!!!!!!!!!
要用listDirectory(A);方法
文件传输基础——Java IO流
133754 学习 · 1030 问题
相似问题