2010-11-16 83 views
0

使用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?

谢谢。

回答

0

尝试使用:

scanner.setIncludes(new String[]{"*/*.java", "*.java"}); 

每一个需要通配符添加到这个阵列。 您为什么使用DirectoryScanner有特殊原因吗?使用自编写的递归函数似乎更容易。

http://leepoint.net/notes-java/io/10file/20recursivelist.html

+0

感谢chzbrgla..just想知道如果多数民众赞成使用通配符*标准/列出的子目录等文件,如果是这样我就可以用目录扫描仪继续前进,因为它会根据给出的结果通配符标准 – Harshana 2010-11-16 15:34:12

+0

我不认为有通配符的真实标准。说实话,我从来没有使用过DirectoryScanner,因为这是一个很容易通过编写递归函数实现的简单任务。我的答案仅仅是来自你提供的代码片段 - 请投票,如果它有帮助:页 – chzbrgla 2010-11-16 15:59:12

相关问题