Utilisation d'un argument de ligne de commande pour transmettre des fichiers à un programme

StackOverflow https://stackoverflow.com/questions/1055318

  •  20-08-2019
  •  | 
  •  

Question

Comment puis-je recevoir un fichier en tant qu'argument de ligne de commande?

Était-ce utile?

La solution

Seul le chemin du fichier est passé. Dans votre programme, utilisez la classe Java File pour le gérer

Ceci prend le premier paramètre comme chemin du fichier:

import java.io.File;

public class SomeProgram {
    public static void main(String[] args) {
        if(args.length > 0) {
            File file = new File(args[0]);

            // Work with your 'file' object here
        }
    }
}

Autres conseils

en Java, la méthode main reçoit un tableau de String en argument, comme vous l'avez probablement remarqué. vous pouvez donner un autre nom au paramètre args, mais c'est le paramètre le plus utilisé.

le tableau args[0] contient les valeurs de ce que l'utilisateur a saisi lors du lancement de votre programme, après le nom de la classe. Par exemple, pour exécuter une classe nommée Foo, l'utilisateur doit taper:

  

[utilisateur @ bureau ~] $ java foo

tout ce que l'utilisateur tape après le nom de la classe est considéré comme un paramètre. par exemple:

  

[utilisateur @ bureau ~] $ java foo bar baz

Votre programme a maintenant reçu deux paramètres: bar et baz . ces paramètres sont stockés dans le tableau args[1]. En tant que tableau Java classique, le premier paramètre peut être extrait en accédant à ArrayIndexOutOfBoundsException, le deuxième paramètre à Abord args.length, etc. si vous essayez d'accéder à une position non valide (lorsque l'utilisateur n'a pas saisi ce que vous attendiez), cette instruction affichera un File, comme avec n'importe quel tableau. vous pouvez vérifier le nombre de paramètres saisis avec <=>.

alors, revenons à votre question. l'utilisateur peut indiquer un nom de fichier en tant que paramètre de ligne de commande et vous pouvez lire cette valeur à l'aide de l'argument de la méthode <=>, généralement appelé <=>. vous devez vérifier s'il a vraiment saisi quelque chose comme argument (vérification de la longueur du tableau), et si tout va bien, vous accédez à <=> pour lire ce qu'il a tapé. Ensuite, vous pouvez créer un objet <=> en fonction de cette chaîne et en faire ce que vous voulez en faire. vérifiez toujours si l'utilisateur a tapé le nombre de paramètres que vous attendez, sinon vous aurez une exception lors de l'accès au tableau.

voici un exemple complet d'utilisation des paramètres de ligne de commande:

public class Foo {
    public static void main(String[] args) {
        if (args.length == 0) {
            System.out.println("no arguments were given.");
        }
        else {
            for (String a : args) {
                System.out.println(a);
            }
        }
    }
}

cette classe analysera les paramètres renseignés par l'utilisateur. s'il n'a pas tapé quoi que ce soit, la classe imprimera le message & "aucun argument n'a été donné. &"; s'il en informe un nombre quelconque de paramètres, ceux-ci seront affichés à l'écran. donc, en exécutant cette classe avec les deux exemples que j'ai donnés pour cette réponse, le résultat serait:

  

[utilisateur @ bureau ~] $ java Foo
  aucun argument n'a été donné.
  [utilisateur @ bureau ~] $ java Foo bar baz
  bar
  baz

À mon avis, il est recommandé d'essayer de détecter args == 0 et de renvoyer une liste de commandes d'aide expliquant comment utiliser le programme si aucun argument n'est fourni.

J'ai vu quelques autres solutions, mais je pense qu'elles ne fonctionneront pas si vous. Par exemple, fournissez C:\Program Files\file.dat comme argument de ligne de commande. Ensuite, cela ne fonctionnera pas, car vous ne prenez que args[0] lors de la création d'un nouveau fichier.

Vous devriez donc faire quelque chose comme ce qui suit, joindre toutes les parties de l'argument donné, puis en faire un fichier:

import java.io.File;

public class SomeProgram {
    public static void main(String[] args) {
        String current = "";
        File lastFile = null;
        for(String str : args){
            File newFile = new File((current + " " + str).trim());
            if(newFile.exists()){
                lastFile = newFile;
            }
        current += " " + str;
        }
        File yourFile = lastFile;
    }
}

Je travaille actuellement sur un problème similaire et cela semble faire l'affaire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top