我用的FileUtils.listFiles,这个看api写是获得文件,试了下果然,不能获得目录列表,要获得目录列表该怎么写?
我的代码如下:
File dir=new File("e:/test/");
File[] files = FileUtils.convertFileCollectionToFileArray(FileUtils
.listFiles(dir, new IOFileFilter() {
public boolean accept(File file) {
return accept(file, "");
} public boolean accept(File file, String s) {
return file.isDirectory();
}
}, new IOFileFilter() {
public boolean accept(File file, String s) {
return true;
} public boolean accept(File file) {
return true;
}
}));
System.out.println(files.length);
最后files.length 是0
我的代码如下:
File dir=new File("e:/test/");
File[] files = FileUtils.convertFileCollectionToFileArray(FileUtils
.listFiles(dir, new IOFileFilter() {
public boolean accept(File file) {
return accept(file, "");
} public boolean accept(File file, String s) {
return file.isDirectory();
}
}, new IOFileFilter() {
public boolean accept(File file, String s) {
return true;
} public boolean accept(File file) {
return true;
}
}));
System.out.println(files.length);
最后files.length 是0
File file = new File("c:\\");
File[] files = file.listFiles(new FilenameFilter() { /**
* 测试指定文件是否应该包含在某一文件列表中。
*
* @param dir
* 被找到的文件所在的目录。
* @param name
* 文件的名称。
* @return 当且仅当该名称应该包含在文件列表中时返回 true;否则返回
* false。返回true时,该文件将被允许添加到文件列表中,否则不能添加到文件列表中。
*/
public boolean accept(File dir, String name) {
File f = new File(dir, name);
if (f.isDirectory())
return true;// 如果是文件夹,返回true。
else
return false;// 否则返回false。
}
});
如果io.File能直接做到就不会去用FileUtils啦...
String path = "c:/";
File dir = new File(path);
if (!dir.exists() || !dir.isDirectory())
System.out.println("路径不存在");
else {
System.out.println("该路径文件列表如下:");
System.out.println(dir.getPath());
listDirectories(dir, " ");
}
} private static void listDirectories(File dir, String indent) {
File[] dirs = dir.listFiles();
for (File f : dirs) {
if (f.isDirectory()) {
System.out.println(indent + f.getName());
listDirectories(f, indent + " ");
}
}
}
}