我想列出當前目錄下的所有文件,但不包括子目錄內的所有文件,它是使用apache commons lib的子目錄。使用apache commons排除特定的子目錄fileutils
例如:如果我的當前目錄爲 - A及其子目錄作爲B,C,d
具有子目錄 乙如B1,B2(B1具有B12作爲其子目錄)和C具有C1,C2 .. 現在我想列出C,c1,c2,D(不包括B,b1,b12,b2)中的所有文件
任何幫助將不勝感激!
我想列出當前目錄下的所有文件,但不包括子目錄內的所有文件,它是使用apache commons lib的子目錄。使用apache commons排除特定的子目錄fileutils
例如:如果我的當前目錄爲 - A及其子目錄作爲B,C,d
具有子目錄 乙如B1,B2(B1具有B12作爲其子目錄)和C具有C1,C2 .. 現在我想列出C,c1,c2,D(不包括B,b1,b12,b2)中的所有文件
任何幫助將不勝感激!
使用org.apache.commons.io.FileFilter,有一個good example如何在JavaDoc中使用它。
比如我有這樣的目錄結構:
/tmp/testFilter/A
/tmp/testFilter/B
/tmp/testFilter/C/c1
/tmp/testFilter/C/c2
/tmp/testFilter/D/d1
然後,我可以只列出C和d下的文件用下面的代碼:
public class FileLister {
public static void main(String args[]) {
File dir = new File("/tmp/testFilter");
String[] files = dir.list(
new NotFileFilter(
new OrFileFilter(
new PrefixFileFilter("A"),
new PrefixFileFilter("B")
)
)
);
listFiles(dir, files);
}
private static void listFiles(File rootDir, String[] files) {
for (String fileName: files) {
File fileOrDir = new File(rootDir, fileName);
if (fileOrDir.isDirectory()) {
listFiles(fileOrDir, fileOrDir.list());
} else {
System.out.println(fileOrDir);
}
}
}
}
謝謝托馬斯你的幫助。 – br001
IOFileFilter fileFilter1 = FileFilterUtils.notFileFilter(FileFilterUtils.nameFileFilter("A", null));
IOFileFilter fileFilter2 = FileFilterUtils.notFileFilter(FileFilterUtils.nameFileFilter("B", null));
FileFilter fileFilter = FileFilterUtils.and(fileFilter1, fileFilter2);
List<File> files = (List<File>)FileUtils.listFilesAndDirs(dir ,TrueFileFilter.INSTANCE ,(IOFileFilter)fileFilter);
for (int i = 0; i < files.size(); i++) {
System.out.println(files.get(i));
}
看一看的使用'dirFilter'參數''FileUtils.listFiles()'方法:http://commons.apache.org/proper/commons-io/javadocs/api-1.4/org/apache/commons/io/FileUtils.html – eebbesen