Ce petit bout de code permet d'analyser simplement les arguments passés en paramètre à la fonction 'main' d'une application.
L'objet GetOpts implémente les méthodes des interfaces Iteratior et Enumeration et permet donc de :
- récupérer l'argument associé à une option.
- tester si un argument était obligatoire ou non pour l'option.
- tester si il y a au moins une option trouvée.
- etc...
seule bémol, le code ne gère pour le moment que les options courte...
edit: je viens d'ajouter la gestion des options longues et/ou courte, options courtes collées, arguments collés
PS : Je sais bien qu'il existe des classes (genre d'apache) pour faire ce petit boulot mais bon personnellement j'aime pas vraiment utiliser d'autres classes que celles créés par sun :P
Source / Exemple :
package org.cs;
import java.util.Enumeration;
import org.cs.getopt.GetOptElement;
import org.cs.getopt.GetOpts;
import org.cs.getopt.LongOption;
/**
-
- File : org.cs.GetOptsTest.java <br>
- Description : Classe de test pour l'objet GetOpts<br>
- @author Twinuts
- /
public class GetOptsTest {
public static void main(String[] args) {
// pour switcher sans toucher le code ^^
boolean short_opt = false;
Enumeration<GetOptElement> opts = null;
if(!short_opt) {
// construction de la liste d'options longues et courtes
LongOption options [] = new LongOption[] {
new LongOption("help", 'h', LongOption.REQUIRED_ARGUMENT),
new LongOption("up", 'u', LongOption.REQUIRED_ARGUMENT),
new LongOption("plop", 'p', LongOption.REQUIRED_ARGUMENT),
new LongOption('f', LongOption.NO_ARGUMENT),
new LongOption("j", 'z', LongOption.REQUIRED_ARGUMENT)
};
// création de l'objet GetOpts
opts = new GetOpts(args, options);
} else
// création de l'objet GetOpts en lui passant la liste d'options courtes
// ici le ':' signifit que l'option attend un argument
opts = new GetOpts(args, "h:u:p:g:1:fj:");
// liste d'options
while(opts.hasMoreElements()) {
// récupération de l'option
GetOptElement e = opts.nextElement();
// affichage des info
System.err.println("Short Option : " + e.getShortOption() +
", Long Option : " + e.getLongOption() +
", Argument : " + e.getArgument() + ", Required : " + e.isRequiredArgument());
}
}
}
Conclusion :
Voir la capture pour l'exemple d'utilisation.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.