2009-06-28 7 views

Répondre

26

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 
     } 
    } 
} 
+0

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

+0

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. –

+0

@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

7

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

2

À 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.

+1

Bienvenue dans StackOverflow! Je pense que l'affiche veut savoir comment le résoudre si args> 0, en fait. –

0

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.

+0

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. –

Questions connexes