Solución:
Tratar FileUtils
de Apache commons-io (listFiles
y iterateFiles
métodos):
File dir = new File(".");
FileFilter fileFilter = new WildcardFileFilter("sample*.java");
File[] files = dir.listFiles(fileFilter);
for (int i = 0; i < files.length; i++) {
System.out.println(files[i]);
}
Para resolver su problema con el TestX
carpetas, primero iteraría a través de la lista de carpetas:
File[] dirs = new File(".").listFiles(new WildcardFileFilter("Test*.java");
for (int i=0; i<dirs.length; i++) {
File dir = dirs[i];
if (dir.isDirectory()) {
File[] files = dir.listFiles(new WildcardFileFilter("sample*.java"));
}
}
Toda una solución de ‘fuerza bruta’, pero debería funcionar bien. Si esto no se ajusta a sus necesidades, siempre puede usar RegexFileFilter.
Considere DirectoryScanner de Apache Ant:
DirectoryScanner scanner = new DirectoryScanner();
scanner.setIncludes(new String[]{"**/*.java"});
scanner.setBasedir("C:/Temp");
scanner.setCaseSensitive(false);
scanner.scan();
String[] files = scanner.getIncludedFiles();
Deberá hacer referencia a ant.jar (~ 1.3 MB para ant 1.7.1).
A continuación, se muestran ejemplos de archivos de lista por patrón impulsados por Java 7 nio globbing y Java 8 lambdas:
try (DirectoryStream<Path> dirStream = Files.newDirectoryStream(
Paths.get(".."), "Test?/sample*.txt")) {
dirStream.forEach(path -> System.out.println(path));
}
o
PathMatcher pathMatcher = FileSystems.getDefault()
.getPathMatcher("regex:Test./sample\w+\.txt");
try (DirectoryStream<Path> dirStream = Files.newDirectoryStream(
new File("..").toPath(), pathMatcher::matches)) {
dirStream.forEach(path -> System.out.println(path));
}
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)