Cela devrait être très simple. Si j'ai une chaîne comme ceci :
../Test?/sample*.txt
alors quelle est la méthode généralement acceptée pour obtenir une liste des fichiers qui correspondent à ce modèle ? (par exemple, il devrait correspondre à ../Test1/sample22b.txt
y ../Test4/sample-spiffy.txt
mais pas ../Test3/sample2.blah
ou ../Test44/sample2.txt
)
J'ai jeté un coup d'oeil à org.apache.commons.io.filefilter.WildcardFileFilter
et cela semble être la bonne bête mais je ne suis pas sûr de savoir comment l'utiliser pour trouver des fichiers dans un chemin de répertoire relatif.
Je suppose que je peux regarder la source pour ant puisqu'il utilise la syntaxe des caractères génériques, mais je dois manquer quelque chose de très évident ici.
( modifier l'exemple ci-dessus n'était qu'un cas d'école. Je cherche un moyen d'analyser les chemins généraux contenant des caractères génériques au moment de l'exécution. J'ai trouvé comment le faire en me basant sur la suggestion de mmyers mais c'est un peu ennuyeux. Sans parler du fait que le JRE java semble analyser automatiquement les caractères génériques simples dans le main(String[] arguments) à partir d'un seul argument pour m'épargner du temps et des soucis... Je suis juste content de ne pas avoir eu d'arguments non-fichiers dans le mélange).
2 votes
C'est le shell qui analyse les caractères génériques, pas Java. Vous pouvez les échapper, mais le format exact dépend de votre système.
2 votes
Non, ça ne l'est pas. Windows n'analyse pas les caractères génériques *. J'ai vérifié cela en exécutant la même syntaxe sur un fichier batch fictif et en affichant l'argument #1 qui était Test/*.obj pointant vers un répertoire rempli de fichiers .obj. Le résultat est "Test/*.obj". Java semble faire quelque chose de bizarre ici.
0 votes
Huh, vous avez raison ; presque toutes les commandes intégrées à l'interpréteur de commandes développent les caractères génériques, mais l'interpréteur de commandes lui-même ne le fait pas. Quoi qu'il en soit, vous pouvez simplement mettre l'argument entre guillemets pour empêcher Java d'analyser les caractères génériques : java MyClass "Test/*.obj"
3 votes
6+ ans plus tard, pour ceux qui détestent le défilement et veulent la solution Java >=7 zero-dep, voir et upvoter réponse ci-dessous par @Vadzim, ou encore de s'épancher verbeusement sur docs.oracle.com/javase/tutorial/essentiel/io/find.html