使用DirectoryScanner列出具有通配符的路径中的文件
问题描述:
使用apache目录扫描程序扫描具有通配符的路径中的文件。使用DirectoryScanner列出具有通配符的路径中的文件
DirectoryScanner scanner = new DirectoryScanner();
scanner.setIncludes(new String[]{"*/*.java"});
scanner.setBasedir("C:/Temp");
scanner.setCaseSensitive(false);
scanner.scan();
String[] files = scanner.getIncludedFiles();
这里的问题是,如果我用上面的代码将只显示温度的子目录,而不是Java文件,它们可直接在临时文件夹内的Java文件。
另外我有通知,如果我使用(new String[]{"*.java"})
那么它会列出Temp文件夹中的所有java文件和(new String[]{"**/*.java"})
将列出所有的java文件,甚至在子目录的子目录。所以我的问题在于,
1)这是适用于每个地方的标准通配符语法吗?我的意思是** /意味着所有的目录和* /只意味着子目录?
2)如何获得文件,这是在Temp目录直接和子directoroes内只(不重新这些子目录里面就像我们使用**)
3)现在我们可以使用DirectoryScanner当看到我们有基地目录,然后是relavanat通配符语法。 但是,假设我们在基地中间也有通配符。如果是的话,我们如何使用DirectoryScanner?
谢谢。
答
尝试使用:
scanner.setIncludes(new String[]{"*/*.java", "*.java"});
每一个需要通配符添加到这个阵列。 您为什么使用DirectoryScanner有特殊原因吗?使用自编写的递归函数似乎更容易。
见http://leepoint.net/notes-java/io/10file/20recursivelist.html
感谢chzbrgla..just想知道如果多数民众赞成使用通配符*标准/列出的子目录等文件,如果是这样我就可以用目录扫描仪继续前进,因为它会根据给出的结果通配符标准 – Harshana 2010-11-16 15:34:12
我不认为有通配符的真实标准。说实话,我从来没有使用过DirectoryScanner,因为这是一个很容易通过编写递归函数实现的简单任务。我的答案仅仅是来自你提供的代码片段 - 请投票,如果它有帮助:页 – chzbrgla 2010-11-16 15:59:12