Ho cercato di utilizzare la nuova funzionalità globbing in JDK7, a partire dal the documentation and examplesCome faccio a utilizzare directory globbing in JDK7
posso ottenere gocce come "glob:*.dat"
a lavorare con l'esempio
Files.walkFileTree(startingDir, finder);
ma non sono riuscito a ottenere il funzionamento della sintassi "**"
. Vorrei essere in grado di creare qualcosa di simile:
matcher = FileSystems.getDefault().getPathMatcher("glob:" + "foo/**/bar/*.dat");
e sarei grato per un semplice esempio. Sto usando Windows 7.
AGGIORNAMENTO: @Oleg e @JBNizet chiariscono che la sintassi "/" è indipendente dal sistema operativo. Si noti che il Javadocs suggeriscono che la sintassi dipende dal sistema operativo è anche possibile
ancora problemi (richiesto?): Avete preso @Nizet e modificata come segue:
@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;
}
});
}
e questo dà in uscita come ad esempio:
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
ma nessuna prova di corrispondenza
'/' funzionerà correttamente su qualsiasi sistema Windows se questo è il tuo problema –
@ Oleg, grazie. Quindi ho sbagliato la logica o ho assunto che i metodi abbiano funzionalità diverse. File.separator è quindi sbagliato? [Trovo la documentazione ufficiale piuttosto abbozzata] –
hai provato "glob: **/*. Cml"? –