Analyse de ligne de commande en Java

Haider Ali 12 octobre 2023
Analyse de ligne de commande en Java

Cet article explique comment exécuter l’analyse de ligne de commande en Java.

Analyse de ligne de commande en Java

Parfois, pour exécuter des programmes Java, nous avons besoin de quelques entrées de base avant d’exécuter le programme. Généralement, ces entrées sont fournies par des arguments de ligne de commande. En Java, les arguments de ligne de commande sont enregistrés dans String[] args à l’intérieur de la fonction main().

Afin d’accepter les arguments du terminal/invite de commande, nous devons définir des options dans le programme Java. Chaque argument de ligne de commande que vous passez doit être stocké dans Options. Dans l’exemple de code ci-dessous, les deux options créées impliquent le phénomène de copier-coller. Voir l’explication.

import org.apache.commons.cli.*;
public class Main {
  public static void main(String[] args) throws Exception {
    Options options = new Options(); // Options Arguments which are Acceptable By Program.
    Option source = new Option("s", "source", true, "source file path");
    source.setRequired(true);
    options.addOption(source);
    Option destination = new Option("d", "Destination", true, "Destination file Path");
    destination.setRequired(true);
    options.addOption(destination);

    CommandLineParser parser = new BasicParser();
    // use to read Command Line Arguments
    HelpFormatter formatter = new HelpFormatter(); // // Use to Format
    CommandLine cmd = null;

    try {
      cmd = parser.parse(
          options, args); // it will parse according to the options and parse option value
    } catch (ParseException e) {
      System.out.println(e.getMessage());
      formatter.printHelp("utility-name", options);

      System.exit(1);
    }

    String argument1 = cmd.getOptionValue("source");
    String argument2 = cmd.getOptionValue("Destination");

    System.out.println(argument1);
    System.out.println(argument2);
  }
}

Il y a deux options créées dans le programme ci-dessus. L’un est la source et l’autre est la destination. Lors de la création de l’option source, nous avons affecté son argument à court terme comme s et nommé sa source. Le s est une commande qui récupère la valeur des arguments source. Lors de l’exécution du programme, l’utilisateur doit utiliser s comme commande suivi de sa valeur. Voir la sortie ci-dessous. Nous avons également défini l’exigence sur true et donné la description comme chemin d’accès au fichier source. Plus tard, nous avons ajouté cet argument d’option source dans Options. De même, avec l’option destination, nous avons effectué la même chose avec des valeurs différentes.

Lorsqu’il s’agit d’analyser ces deux options, nous avons créé un objet de CommandLineParser. Avec l’aide de HelpFormatter, nous avons formaté les arguments de la commande si nous devions afficher l’exception.

À l’intérieur de la méthode try...catch, en utilisant le parse() pour l’analyse avec les paramètres options et args. Ensuite, nous obtenons simplement les valeurs de l’option en utilisant getOptionValue() et passons le nom des options entre parenthèses.

Nous imprimons simplement les valeurs. D’un autre côté, vous pouvez exécuter différents programmes en utilisant cette approche.

Pour exécuter le programme, nous devons utiliser les commandes suivantes.

javac
    - cp 'org.apache.commons.cli-1.2.0.jar' Main.java

          java
    - cp 'org.apache.commons.cli-1.2.0.jar' Main.java - s 'D://textfile.txt'
    - d 'D://DuplicatFolder//'

Ici, -s et -d sont les commandes. Ils sont tous deux suivis de leurs valeurs, respectivement. Par exemple, dans le programme ci-dessus, nous mettrons le chemin source pour s et la destination pour d.

Le programme ci-dessus donnera la sortie suivante.

D : // textfile.txt
    D: // DuplicatFolder//
Auteur: Haider Ali
Haider Ali avatar Haider Ali avatar

Haider specializes in technical writing. He has a solid background in computer science that allows him to create engaging, original, and compelling technical tutorials. In his free time, he enjoys adding new skills to his repertoire and watching Netflix.

LinkedIn