2010-11-16 13 views
0

Im utilisant l'analyseur de répertoire apache pour analyser les fichiers dans un chemin ayant des caractères génériques.Répertorie les fichiers dans un chemin ayant des caractères génériques à l'aide de DirectoryScanner

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

Le problème ici est si j'utilise le code ci-dessus, il affiche uniquement les fichiers Java dans les sous-répertoires de Temp et non des fichiers Java qui sont directement dans le dossier Temp.

Aussi je ai avis si j'utilise (new String[]{"*.java"}) puis il listera tous les fichiers java dans le dossier Temp et (new String[]{"**/*.java"}) listera tous les fichiers java même à l'intérieur des sous-répertoires du sous-répertoire. Donc, ma question ici est,

1) Est-ce la syntaxe de caractère générique standard qui s'applique à chaque endroit? je veux dire **/signifie tous les répertoires et */signifie seulement les sous-répertoires?

2) Comment obtenir des fichiers qui sont dans le répertoire Temp directement et à l'intérieur sous directoroes uniquement (pas de nouveau dans ces sous-répertoires comme nous utilisons **)

3) Maintenant, nous pouvons voir lors de l'utilisation DirectoryScanner nous avons la base répertoire, puis la syntaxe de wildcard relavanat. Mais supposons que nous ayons des jokers au milieu du mail de base aussi. Si oui, comment pouvons-nous utiliser DirectoryScanner?

Merci.

Répondre

0

Essayez d'utiliser:

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

Ajouter tous les caractères génériques nécessaires à ce tableau. Existe-t-il une raison particulière pour laquelle vous utilisez DirectoryScanner? Utiliser une fonction récursive auto-écrite pour cela semble plus facile.

Voir http://leepoint.net/notes-java/io/10file/20recursivelist.html

+0

merci chzbrgla..just veux savoir si c'est la norme générique en utilisant */à la liste des fichiers dans des sous-répertoires, etc. Si donc je peux aller de l'avant avec le scanner Directory car il donnera le résultat selon la norme générique donné – Harshana

+0

Je ne pense pas qu'il existe un véritable standard pour les caractères génériques. Pour être honnête, je n'ai jamais utilisé DirectoryScanner car c'est une tâche si triviale que l'on peut facilement réaliser en écrivant une fonction récursive. Ma réponse était simplement dérivée de l'extrait de code que vous avez fourni - veuillez voter si cela vous a été utile: p – chzbrgla