Comment utiliser la globalisation de répertoire dans JDK7
J'ai essayé d'utiliser la nouvelle fonction d'expansion dans le JDK7, à partir de la documentation et les exemples
Je peux obtenir des boules comme "glob:*.dat"
de travailler avec le
Files.walkFileTree(startingDir, finder);
exemple, mais j'ai été incapable d'obtenir le "**"
syntaxe de travail. Je voudrais être en mesure de créer quelque chose comme:
matcher = FileSystems.getDefault().getPathMatcher("glob:" + "foo/**/bar/*.dat");
et serait reconnaissant pour un exemple simple. Je suis avec Windows 7.
Mise à JOUR:
@Oleg et @JBNizet, il est clair que le "/" syntaxe est OS indépendant. Notez que le La documentation javadoc suggèrent que les OS dépendant de la syntaxe est également possible (?nécessaire)
ENCORE DES PROBLÈMES:
Ont pris @Nizet et modifiés comme suit:
@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;
}
});
}
ce qui donne en sortie:
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
mais aucune preuve de l'appariement
source d'informationauteur peter.murray.rust | 2012-02-05
Vous devez vous connecter pour publier un commentaire.
Voici un exemple qui affiche tous les fichiers zip dans tout descendant répertoire de
d:/
:Comme vous le voyez, à l'aide de barres obliques fonctionne sur Windows.
Vous avez besoin pour commencer votre glob **
Autrement, en appelant
tente de faire correspondre le chemin complet vers le fichier avec une expression régulière qui commence avec le chemin d'accès relatif (/foo/), plutôt qu'avec le chemin absolu d:/petermr-workspace/.../foo).
Ajoutant la ** pour le glob dit juste de l'ignorer le début du chemin d'accès absolu.