使用DirectoryScanner列出具有通配符的路径中的文件

时间:2010-11-16 14:36:49

标签: java apache ant wildcard

我使用apache目录扫描程序扫描具有通配符的路径中的文件。

DirectoryScanner scanner = new DirectoryScanner();
scanner.setIncludes(new String[]{"*/*.java"});
scanner.setBasedir("C:/Temp");
scanner.setCaseSensitive(false);
scanner.scan();
String[] files = scanner.getIncludedFiles();

这里的问题是如果我使用上面的代码,它只会在Temp的子目录中显示java文件,而不是直接在Temp文件夹中的java文件。

另外我注意到如果我使用(new String[]{"*.java"})然后它将列出Temp文件夹中的所有java文件,(new String[]{"**/*.java"})将列出所有java文件,甚至在子目录的子目录中。所以我的问题是,

1)这是适用于每个地方的标准通配符语法吗?我的意思是** /表示所有目录,* /表示只有子目录?

2)如何直接获取Temp目录中的文件和子目录内的文件(不再像我们使用**那样在子目录中)

3)现在我们可以看到使用DirectoryScanner时我们有基本目录,然后是relavanat通配符语法。 但是假设我们在基地中间也有通配符。如果是这样,我们如何使用DirectoryScanner?

谢谢。

1 个答案:

答案 0 :(得分:0)

尝试使用:

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

将所有需要的通配符添加到此数组。 您使用DirectoryScanner有特殊原因吗?使用自编的递归函数似乎更容易。

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