J'essaie d'analyser mes arguments de ligne de commande à l'aide de la CLI apache commons. Cela peut être un peu lourd pour l'exemple ici, mais c'est logique dans le contexte du programme que je suis en train de créer. J'essaye de lire un filtre de modèle de fichier, semblable à ce que grep utilise pour sélectionner les fichiers à traiter.Comment analyser les modèles de fichiers à l'aide des communs Apache CLI
Mon argument ressemble à ceci:
Program --input *.*
J'ai écrit un programme de test pour voir ce que l'analyseur voit;
public static void main(String[] args) {
Options options = new Options();
options.addOption(new Option(INPUT_FILTER_SHORT, INPUT_FILTER_LONG, true, INPUT_FILTER_DESCRIPTION));
CommandLineParser parser = new BasicParser();
CommandLine cmd = parser.parse(options, args);
System.out.println(cmd.getOptionValue(INPUT_FILTER_SHORT));
}
Ceci affiche:
.classpath
Si je change mes arguments:
Program --input test.txt
Je reçois la sortie:
test.txt
Je suppose que je avoir à faire quelque chose pour dire aux communs apache ce que * est pas un personnage spécial? Je n'arrive pas à trouver quoi que ce soit à ce sujet en ligne. Je rencontre ça sur Windows (7). Je suis à peu près certain que c'est le *. * Qui cause le problème car lorsque je permets d'utiliser des motifs qui n'utilisent pas *, le motif attendu apparaît.
Qu'est-ce qui se passe si vous entourez '*. *' par des guillemets (essayez des guillemets simples et doubles)? Exemple: 'Program --input" *. * "' – Rafa
Je viens de mettre à jour le post, mais cela se produit sur Windows 7. Lorsque je l'entoure de guillemets simples, il affiche '*. *' (Y compris les guillemets), quand je double citation, il affiche '.classpath' – Andy