2011-03-04 7 views
1

J'essaie de lire à partir d'un fichier, prendre la longueur de chaque ligne, écrire la longueur dans un autre fichier, puis imprimer le deuxième fichier pour voir le résultat de l'écriture, mais quand j'ouvre le deuxième fichier le résultat n'est pas exactement la chose que je veux. Il y a beaucoup de chiffres dans le fichier après l'exécution de ce code:écrire et lire dans le fichier java

String line = null; 

    boolean flag = false; 

    BufferedReader bf = new BufferedReader(new FileReader("c:\\lm_giga_5k_nvp_2gram.arpa")); 

    BufferedWriter index = new BufferedWriter(new FileWriter("c:\\index.txt")); 
    int l; 

    int counter=0; 

    while ((line = bf.readLine()) != null) 

    { 

     l=line.length(); 

     index.write(l + "\n"); 

    } 

    BufferedReader bf1 = new BufferedReader(new FileReader("c:\\index.txt")); 

    String line1=null; 

    while ((line1 = bf1.readLine()) != null) 


    { 
     System.out.println(line1); 


    } 

    bf.close(); 

    bf1.close(); 

S'il vous plaît aider moi en utilisant cet exemple. Je ferme l'index, mais j'ai toujours le même problème.

Remarque: Ne faites pas attention au fichier ARPA, vous pouvez image un fichier txt à la place.

+0

est vos devoirs? –

+0

Ne devriez-vous pas avoir fermé les fichiers lorsque vous avez fini de les lire et de leur écrire? Quelle est exactement la chose que vous voulez? Vous dites que vous vouliez imprimer la longueur de chaque ligne du premier fichier au second fichier. C'est ce que tu as. –

+0

Quelle est la sortie que vous obtenez? – CloudyMarble

Répondre

2

Vous devez fermer index.txt avant de l'ouvrir à un endroit différent; ou au moins flush il:

... 
index.close(); 

BufferedReader bf1 = new BufferedReader(new FileReader("c:\\index.txt")); 

String line1=null; 
... 
+0

ok maintenant je ferme l'index mais toujours le même problème – user642564

+1

Pouvez-vous nous montrer une partie de la sortie? – trojanfoe

+0

j'ai eu mon problème, je dois utiliser index.newLine(); aller à la ligne suivante au lieu d'utiliser "\ n". – user642564

0

Voici écriture et méthodes de lecture. Vous pouvez les personnaliser pour répondre à vos besoins.

public boolean writePublic(String strWrittenString, String writeFileName, String writeEncoding, boolean appendString) { 

    try { 
     //System.out.println("Writing to file named " + writeFileName + " ..."); 
     Writer out = new OutputStreamWriter(new FileOutputStream(writeFileName, appendString), writeEncoding); 
     try { 
      out.write(strWrittenString); 

     } finally { 
      out.close(); 
     } 

     //System.out.println("Writing to file named " + writeFileName + "- success."); 
     return true; 
    } catch (IOException ioe) { 
     System.out.println("file named " + writeFileName + "-Failed. cause: " + ioe.getMessage()); 
     return false; 
    } catch (Exception e23) { 
     System.out.println("file named " + writeFileName + "-Failed. cause: " + e23.getMessage()); 
     return false; 
    } 

} 

Et Méthode de lecture:

public static String readWithoutEncoding(String readFileName) { 
    StringBuilder text = new StringBuilder(); 
    try { 
     //System.out.println("Reading from file named " + readFileName + " ..."); 

     String NL = System.getProperty("line.separator"); 
     Scanner scanner = new Scanner(new FileInputStream(readFileName)); 
     try { 
      while (scanner.hasNextLine()) { 
       text.append(scanner.nextLine() + NL); 
      } 
     } finally { 
      scanner.close(); 
     } 
    // System.out.println("Text read in: " + text); 
    //System.out.println("Reading from file named " + readFileName + "- success."); 
    } catch (IOException ioe) { 
     System.out.println("file named " + readFileName + "-Failed. cause: " + ioe.getMessage()); 
    } catch (Exception e23) { 
     System.out.println("file named " + readFileName + "-Failed. cause: " + e23.getMessage()); 


    } finally { 
     return text.toString(); 
    } 

} 

Ne pas oublier également de placer des déclarations d'importation nécessaires au début de la classe Java contenant des méthodes ci-dessus:

import java.io.*; 
import java.util.Scanner;