我有以下结构的文件夹
C:/rootDir/
rootDir has following files
test1.xml
test2.xml
test3.xml
testDirectory <------- This is a subdirectory inside rootDir
我只是在里面ROOTDIR的XML文件感兴趣。 曲子如果我使用JDOM读取XML下面的代码也考虑内部“testDirectory”的文件,并吐出了“不允许例外内容”
File testDirectory = new File("C://rootDir//");
File[] files = testDirectory.listFiles();
我怎么能排除子目录,而使用listFiles方法? 将下面的代码工作?
File testDirectory = new File("C://rootDir//");
File[] files = testDirectory.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return name.toLowerCase().endsWith(".xml");
}
});
使用FileFilter
相反,因为它会给你访问实际的文件,则包括检查File#isFile
File testDirectory = new File("C://rootDir//");
File[] files = testDirectory.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
String name = pathname.getName().toLowerCase();
return name.endsWith(".xml") && pathname.isFile();
}
});
更简单的是要认识到, 文件对象有一个isDirectory方法,就好像它是书面回答过这个问题这似乎:
File testDirectory = new File("C://rootDir//");
File[] files = testDirectory.listFiles();
for (File file : files) {
if ( (file.isDirectory() == false) && (file.getAbsolutePath().endsWith(".xml") ) {
// do what you want
}
}
File testDirectory = new File("C://rootDir//");
File[] files = testDirectory.listFiles(new FilenameFilter()
{
@Override
public boolean accept(File dir, String name) {
return name.toLowerCase().endsWith(".xml");
}});
什么是与上面的代码的问题。 你可以用这个排除子文件夹列表文件。
同样的FileFilter做的同样的事情,但是当文件名不sufficent于上市文件将使用它。 也就是说,如果你想列出所有隐藏文件或只读文件等,你可以使用FilteFilter