he estado tratando de utilizar la nueva característica englobamiento en JDK7, a partir de the documentation and examples¿Cómo utilizo directorio globbing en JDK7
puedo conseguir pegotes como "glob:*.dat"
para trabajar con el ejemplo
Files.walkFileTree(startingDir, finder);
pero no he podido obtener la sintaxis "**"
funcionando. Me gustaría poder crear algo como:
matcher = FileSystems.getDefault().getPathMatcher("glob:" + "foo/**/bar/*.dat");
y agradeceré un ejemplo simple. Estoy usando Windows 7.
ACTUALIZACIÓN: @Oleg y @JBNizet dejan en claro que la sintaxis "/" es independiente del sistema operativo. Tenga en cuenta que la Javadocs sugieren que la sintaxis OS dependiente también es posible
sigue habiendo problemas (requerido?): Haber @Nizet y editado de la siguiente manera:
@Test
public void testStackoverflowGlobber() throws IOException {
final PathMatcher matcher =
FileSystems.getDefault().getPathMatcher("glob:*.cml");
Files.walkFileTree(Paths.get("d:/petermr-workspace/jumbo-converters/jumbo-converters-cli/src/test/resources"), new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
System.out.println("try>> "+file);
if (matcher.matches(file)) {
System.out.println("MATCHES>>"+file);
}
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException {
return FileVisitResult.CONTINUE;
}
});
}
y esto da salida como:
try>> d:\petermr-workspace\jumbo-converters\jumbo-converters-cli\src\test\resources\examples\cdx\r19.cdx
try>> d:\petermr-workspace\jumbo-converters\jumbo-converters-cli\src\test\resources\examples\cdx\r19.cdxml
try>> d:\petermr-workspace\jumbo-converters\jumbo-converters-cli\src\test\resources\examples\cdx\r19.cml
try>> d:\petermr-workspace\jumbo-converters\jumbo-converters-cli\src\test\resources\examples\cdx\r19.ref.cdxml
try>> d:\petermr-workspace\jumbo-converters\jumbo-converters-cli\src\test\resources\examples\cdx\r19.ref.cml
try>> d:\petermr-workspace\jumbo-converters\jumbo-converters-cli\src\test\resources\examples\cif\aa2004.cml
pero no hay evidencia de igualar
'/' funcionará bien en cualquier sistema Windows si esa es su preocupación –
@Oleg gracias. Así que tengo algo de lógica equivocada o supongo que los métodos tienen una funcionalidad diferente. Por lo tanto, File.separator está mal? [Creo que la documentación oficial es bastante incompleta] –
¿Has probado "glob: **/*. Cml"? –