2016-08-19 2 views
-2

Lesen und schreiben Sie den Text. In lesen und schreiben Textdatei muss ich alle Daten in der Textdatei drucken, aber es druckt nur die letzte Zeile, wie Sie alle Zeile schreiben. Programm:In der Lese- und Schreib-Textdatei muss ich alle Daten in der Textdatei drucken, aber es wird nur die letzte Zeile gedruckt, wie alle Zeilen geschrieben werden

public class fs 
    { 
    try 
     { 
      BufferReader in = new BufferReader(FileReader(C:/Users/madhan kumar/Desktop/read.txt)); 
     String s; 
     String[] result=null; 
     while((s=in.readLine())!=null) 
     { 

     result=s.split("\\|"); 
      result = String[4]; 
      String Name = result[0]; 
      String age = result[1]; 
      String Sex = result[2]; 
      String field = result[3]; 
       System.out.println("Name :"+Name+"Age      :"+age+"Sex :"+Sex+"Field"+field); 
         BufferedWriter bw =new BufferedWriter (new FileWriter ("out.txt"); 
     bw.write ("Name :"+Name+"Age      :"+age+"Sex :"+Sex+"Field"+field); 
    Bw.close(); 
     }} 
     catch(Exception e) 
     { 
     System.out.println(e); 
     } 
     } 
     } 


    My txt file 
    malik|23|male|student 
    nakul|30|male|student 
    ram|27|male|worker 
    mak|25|male|student 
+1

Bitte verwenden Sie keine Tags, die nichts mit Ihrer Frage zu tun haben. – Rakete1111

+1

Sprach-Tag-Spam, keine klare Frage, schlecht formatierter Code - kein guter Anfang. Bitte gehen Sie durch die Abschnitte [Tour], [Hilfe] und [Wie Sie eine gute Frage stellen] (http://stackoverflow.com/help/how-to-ask), um zu sehen, wie diese Website funktioniert. –

+0

Das erste Problem, das ich sehe, ist, dass Sie Anweisungen direkt im Klassenkörper und nicht in einer Methode haben. Das zweite Problem, das ich sehe, ist, dass Sie den 'try' Block nicht schließen, bevor Sie' catch' aufrufen. Ein Stilproblem besteht darin, dass Sie sich nicht korrekt einrücken und Sie nicht die richtigen Benennungsregeln verwenden, wobei Klassen TitleCase und Variablen/Methoden CamelCase sind. – 4castle

Antwort

1

Die Antwort auf Ihre Hauptfrage ist, dass Sie nur die letzte Zeile, weil Sie eine neue BufferedWriter jedes Mal, erstellen Sie die .txt schreiben, und wenn Sie das tun, dass es Text löscht bereits auf die .txt-Datei. Zur Lösung dieses Problem einfach Ihre BufferedWriter außerhalb der while-Schleife deklarieren:

import java.io.BufferedReader; 
import java.io.BufferedWriter; 
import java.io.IOException; 
import java.util.StringTokenizer; 
import java.io.FileReader; 
import java.io.FileWriter; 
public class fs{ 

    public static void main(String[] args){ 
     StringTokenizer str; 
     try 
     { 
      BufferedReader in = new BufferedReader(new FileReader("C:/Users/madhan kumar/Desktop/read.txt")); 
      BufferedWriter bw = new BufferedWriter (new FileWriter("out.txt")); 
      String s; 
      while((s=in.readLine())!=null){ 
       str = new StringTokenizer(s, "|"); 
       String name = str.nextToken(); 
       String age = str.nextToken(); 
       String sex = str.nextToken(); 
       String field = str.nextToken(); 
       System.out.println("Name: "+name+"\tAge: "+age+"\tSex: "+sex+"\tField: "+field); 
       bw.write("Name: "+name+"\tAge: "+age+"\tSex: "+sex+"\tField: "+field); 
      } 
      bw.close(); 
     }catch(IOException e){ 
      e.printStackTrace(); 
     } 

    } 
} 

Ich habe ein paar kleine Anpassungen, größte Wesen, das ich StringTokenizer verwendet, die ziemlich viel kostet das gleiche wie Ihre Splitting-Methode, ist aber ein wenig eloquenter.

+0

So lesen und schreiben Sie das gleiche Format mit der Liste –

+0

Entschuldigung, können Sie bitte Ihre Frage klären? –

Verwandte Themen