begin process at 2008 08 20 14:30:41
1 228 884 membres
250 nouveaux aujourd'hui
14 258 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

GETOPTIONS : RÉCUPÈRE LES ARGUMENTS EN LIGNE DE COMMANDE


Information sur la source

Catégorie :Divers Classé sous : getopt, arguments, main Niveau : Débutant Date de création : 22/04/2007 Date de mise à jour : 25/06/2008 20:00:17 Vu / téléchargé: 5 433 / 201

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note

Description

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

  • 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());
  • }
  • }
  • }
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.
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  •   GetOptions
    •   bin
      •   org
        •   cs
          •   getopt
            • GetOptElement.classTélécharger ce fichier [Réservé aux membres club]1 147 octets
            • GetOpts$GetLongOptionsEnum.classTélécharger ce fichier [Réservé aux membres club]1 253 octets
            • GetOpts.classTélécharger ce fichier [Réservé aux membres club]6 500 octets
            • LongOption.classTélécharger ce fichier [Réservé aux membres club]1 799 octets
          • GetOptsTest.classTélécharger ce fichier [Réservé aux membres club]1 903 octets
    •   src
    • build.xmlTélécharger ce fichier [Réservé aux membres club]Voir ce fichier557 octets
    • COPYINGTélécharger ce fichier [Réservé aux membres club]35 147 octets
    • COPYING.LESSERTélécharger ce fichier [Réservé aux membres club]7 639 octets
    • getOpts.jarTélécharger ce fichier [Réservé aux membres club]7 738 octets
    • snapshot.jpgTélécharger ce fichier [Réservé aux membres club]Voir ce fichier133 976 octets

Télécharger le zip

22 avril 2007 21:21:38 :
mauvais zip :P
22 avril 2007 21:27:39 :
Les accents ne sont pas passés ...
25 juin 2008 19:46:36 :
refonte du code, ajout de la gestion des options longues et/ou courte, options courtes collées, arguments collés, etc... bref nouvelle version
25 juin 2008 20:00:17 :
pb image
  • signaler à un administrateur
    Commentaire de coucou747 le 18/06/2008 11:01:20

    salut
    Pourquoi n'implementes tu pas java.utils.<E>Iterator
    sinon, si j'ai bien compris ton code, on ne peut pas gerer :
    -a -b -c
    comme :
    -abc
    et c'est gennant (cf les recomandations unix au sujet du passage des arguments.)

  • signaler à un administrateur
    Commentaire de Twinuts le 18/06/2008 11:36:47 administrateur CS

    Salut,

    "Pourquoi n'implémentes tu pas java.utils.<E>Iterator"
    >> J'ai fait la modification mais je ne l'ai jamais postée ici, je verrais si j'ai le temps de le faire pendant mes vacances.

    "sinon, si j'ai bien compris ton code, on ne peut pas gerer :
    -a -b -c
    comme :
    -abc
    et c'est gennant (cf les recomandations unix au sujet du passage des arguments.)"
    >>je sais bien... lorsque j'ai fait ce code c'était uniquement pour une utilisation super simplifiée du getopt d'unix (ce qui collait à mon besoin). Mais j'en prend bonne note et je vais essayer de voir également si je peux ajouter le support complet des options courtes et longues, mafois je ne garanti pas une nouvelle version dans les jours à venir vu je manque cruellement de temps en ce moment.

    cela dit merci pour l'intérêt apporté à ce code :)

  • signaler à un administrateur
    Commentaire de Twinuts le 26/06/2008 15:24:45 administrateur CS

    voilou modification faite ^^

Ajouter un commentaire

Pub



Appels d'offres

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS