2010-11-29 6 views
3

c'est le code que j'ai trouvé sur Internet pour lire les lignes d'un fichier et aussi j'utilise eclipse et j'ai passé le nom de fichiers comme SanShin.txt dans son champ d'argument. mais il imprimera:Passer un fichier comme un argument de ligne de commande et lire ses lignes

Error: textfile.txt (The system cannot find the file specified) 

code:

public class Zip { 
    public static void main(String[] args){ 
     try{ 
      // Open the file that is the first 
      // command line parameter 
      FileInputStream fstream = new FileInputStream("textfile.txt"); 
      BufferedReader br = new BufferedReader(new InputStreamReader(fstream)); 
      String strLine; 
      //Read File Line By Line 
      while ((strLine = br.readLine()) != null) { 
       // Print the content on the console 
       System.out.println (strLine); 
      } 
      //Close the input stream 
      in.close(); 
      }catch (Exception e){//Catch exception if any 
       System.err.println("Error: " + e.getMessage()); 
      } 


    } 
} 

s'il vous plaît aidez-moi pourquoi il imprime cette erreur. merci

+0

J'ai un tel fichier texte! !! – user472221

+0

aussi c'est l'emplacement de mon projet: C: \ Documents and Settings \ icc \ espace de travail \ Projet Hoffman – user472221

+0

et mon fichier texte est dans le bureau. – user472221

Répondre

11
... 
// command line parameter 
if(argv.length != 1) { 
    System.err.println("Invalid command line, exactly one argument required"); 
    System.exit(1); 
} 

try { 
    FileInputStream fstream = new FileInputStream(argv[0]); 
} catch (FileNotFoundException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 

// Get the object of DataInputStream 
... 

> java -cp ... Zip \path\to\test.file 
+1

Comment devez-vous initialiser 'argv'? Pouvez-vous utiliser 'args' à la place? – Navigatron

1

Votre new FileInputStream("textfile.txt") est correct. S'il lance cette exception, il n'y a pas textfile.txt dans le répertoire en cours lorsque vous exécutez le programme. Êtes-vous sûr que le nom du fichier n'est pas réellement testfile.txt (notez le s, pas x, dans la troisième position).


hors sujet: Mais votre question précédente supprimé a demandé comment lire une ligne de fichiers en ligne (je ne pensais pas que vous aviez besoin de le supprimer, FWIW). En supposant que vous êtes encore un débutant et obtenir le coup de choses, un pointeur: Vous probablement ne voulez pas voulez utiliser FileInputStream, qui est pour les fichiers binaires, mais à la place utiliser le Reader ensemble d'interfaces/classes java.io (compris FileReader). En outre, lorsque cela est possible, déclarez vos variables en utilisant l'interface, même en les initialisant à une classe spécifique, par exemple, Reader r = new FileReader("textfile.txt") (plutôt que FileReader r = ...).

1

Lorsque vous spécifiez simplement "textfile.txt" le système d'exploitation regardera dans le répertoire de travail du programme pour ce fichier.

Vous pouvez spécifier le chemin absolu du fichier avec quelque chose comme new FileInputStream("C:\\full\\path\\to\\file.txt")

Aussi, si vous voulez connaître le répertoire de votre programme est en cours d'exécution, essayez ceci: System.out.println(new File(".").getAbsolutePath())