Comment puis-je recevoir un fichier en tant qu'argument de ligne de commande?Utilisation de l'argument de ligne de commande pour transmettre des fichiers à un programme
Répondre
Juste le chemin du fichier est passé, dans votre programme, utilisez la classe Java de fichiers pour gérer
Cela prend le premier paramètre comme le 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
}
}
}
en Java, le main
La méthode reçoit un tableau de String comme argument, comme vous l'avez probablement remarqué. vous pouvez donner un autre nom au paramètre args
, mais celui-ci est le plus utilisé.
le tableau args
contient les valeurs de ce que l'utilisateur a tapé 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 saisir:
[user bureau @ ~] $ java Foo
tout les types d'utilisateur après le nom de classe est considérée comme un paramètre . par exemple:
[user @ bureau ~] $ java Foo bar baz
maintenant votre programme a reçu deux paramètres: bar et baz. ces paramètres sont stockés dans le tableau args
. Comme un tableau Java normal, le premier paramètre peut être récupéré en accédant à args[0]
, le deuxième paramètre peut être récupéré en accédant à args[1]
, et ainsi de suite. Si vous essayez d'accéder à une position invalide (lorsque l'utilisateur n'a pas tapé ce que vous attendiez), cette instruction lancera un ArrayIndexOutOfBoundsException
, exactement comme avec n'importe quel tableau. vous pouvez vérifier combien de paramètres ont été tapés avec args.length
.
donc, retour à 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 via l'argument de la méthode main
, généralement appelée args
. vous devez vérifier s'il a réellement tapé quelque chose en tant qu'argument (en vérifiant la longueur du tableau), et si c'est ok, vous devez accéder à args[0]
pour lire ce qu'il a tapé. Ensuite, vous pouvez créer un objet File
basé sur cette chaîne, et faire ce que vous voulez faire avec. vérifiez toujours si l'utilisateur a tapé le nombre de paramètres que vous attendez, sinon vous obtiendrez une exception lors de l'accès au tableau.
est ici un exemple complet de la façon d'utiliser les 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 informés par l'utilisateur. s'il n'a rien tapé, la classe imprimera le message "aucun argument n'a été donné". s'il informe un nombre quelconque de paramètres, ces paramètres seront affichés sur l'écran. donc, l'exécution de cette classe avec les deux exemples que j'ai donné cette réponse, la sortie serait:
$ java [user bureau @ ~] Foo
qu'aucun argument n'a été donné.
[user bureau @ ~] $ java bar Foo baz
bar
baz
À mon avis, les meilleures pratiques pour essayer de détecter args == 0 et retourner une liste d'aide des commandes sur la façon d'utiliser le programme si aucun argument n'est fourni.
Bienvenue dans StackOverflow! Je pense que l'affiche veut savoir comment le résoudre si args> 0, en fait. –
J'ai vu quelques autres solutions, mais je pense qu'elles ne fonctionneront pas si vous. Par exemple, fournissez C:\Program Files\file.dat
en tant qu'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.
Donc, vous devriez vraiment faire quelque chose comme ce qui suit, se joindre à toutes les parties de l'argument donné et ensuite faire un fichier de celui-ci:
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 la tour.
Ceci est une bonne solution si le (s) argument (s) transmis au programme est un chemin de fichier contenant des espaces. Cependant, ce n'est pas une bonne approche si plus qu'un simple chemin de fichier est passé au programme. La bonne approche consiste à entourer le chemin du fichier avec des guillemets avant de l'envoyer au programme. Le programme devrait alors vérifier que chaque argument est du bon type, et sinon afficher le bon cas d'utilisation et quitter. –
- 1. Programme de ligne de commande Windows tiers?
- 2. Utilisation de Office pour convertir des documents par programme?
- 3. Comment passer des arguments de ligne de commande à un programme Perl?
- 4. Envoyer des commandes à d'autres programmes de ligne de commande
- 5. Comment compiler un simple programme boost à partir de la ligne de commande dans unix
- 6. Programme pour afficher une fenêtre de notification "toast" à partir de la ligne de commande Windows?
- 7. Utilisation d'une ligne de commande unique et de variables.
- 8. Comment transmettre des paramètres à un sous-programme?
- 9. Comment transmettre en Runtime un index de ligne pour ListView?
- 10. Comment transmettre en Runtime un index de ligne pour DataView?
- 11. Fichiers batch - nombre d'arguments de ligne de commande
- 12. Comment utiliser les arguments de ligne de commande pour imprimer des fichiers MS Office?
- 13. Analyseur de ligne de commande pour Qt4
- 14. Quelle est la syntaxe de la ligne de commande pour supprimer des fichiers dans Perforce?
- 15. Comment demander un argument de ligne de commande pour Ant?
- 16. Lancer des fichiers .jar avec des arguments de ligne de commande (mais sans fenêtre de console)
- 17. Comment générer des captures vidéo de fichiers vidéo via la ligne de commande linux
- 18. Utilisation de TFS, exécution d'un outil de ligne de commande pour effectuer l'obfuscation
- 19. Où devrais-je mettre des fichiers de modèle Velocity pour un utilitaire de ligne de commande construit avec Maven?
- 20. Est-il possible de passer des arguments de ligne de commande à un exécutable via un fichier associé?
- 21. QtCreator et arguments de ligne de commande
- 22. C Shell: Comment exécuter un programme avec des arguments de ligne sans commande?
- 23. Un outil de ligne de commande Unix standard pour acheminer vers un socket
- 24. Compilateur de ligne de commande Windows Mobile
- 25. Outil de ligne de commande pour créer un script pour des tables MSSQL spécifiques
- 26. oracle ligne de commande de la question
- 27. arguments de ligne de commande
- 28. Comment obtenir des arguments de ligne de commande pour un processus en cours
- 29. Lorsqu'une nouvelle ligne dans la base de données est ajoutée, un programme de ligne de commande externe doit être appelé
- 30. Utilisation de WiX pour empaqueter un programme d'installation avec plusieurs fichiers
pouvez-vous m'en dire plus sur ce que vous entendez par "arg [0]" Je n'ai pas trouvé la source utile pour lire le sujet de la ligne de commande.: (((( – Johanna
Lire la section "la méthode principale" http://java.sun.com/docs/books/tutorial/getStarted/application/index.html Il décrit assez bien ce que sont les "args" Le tutoriel lui-même est une bonne source pour trouver la réponse à un certain nombre de questions. –
@Johanna: Le paramètre args [0] accède à la chaîne de caractères args à la position 0 (premier élément du tableau). args est passé en paramètre à la méthode main (String [] args), et est un tableau de chaînes qui contient les arguments de ligne de commande passés au programme – Sean