2016-04-26 2 views
0

Ich versuche, von einer Datei zu lesen und dann während des Anhängens an dieselbe Datei zu schreiben.Wie schreibe ich einen Int in die gleiche Datei, aus der wir lesen?

Die zu lesende Datei hat 5,10 und nach dem Schreiben sollte die Datei 5,10"\n" 15 haben.

Aber stattdessen hat es 5,10"\n" SI.

hier ist mein Quellcode -

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


public class Ash { 



public static void main(String[] args) throws IOException{ 

File file = new File("ashray.txt"); 
BufferedReader reader = new BufferedReader(new FileReader(file)); 
Scanner input = new Scanner(reader); 

    String str = input.nextLine(); 

    String [] sc = str.split(","); 

    int x = Integer.parseInt(sc[0]); 
    int y = Integer.parseInt(sc[1]); 
    int z = x+y; 
    input.close(); 

    FileWriter fw = new FileWriter(file,true); 
    BufferedWriter writer = new BufferedWriter(fw);  
    writer.write(Integer.toString(z)); 

    fw.close();  

    }  
} 
+1

müssen Sie den Leser schließen .. –

+1

@AnoopLL - nein, tut er nicht. Durch Schließen des Scanners wird der Scanner geschlossen. –

Antwort

0

Verwenden Sie die PrintWriter

PrintWriter writer = new PrintWriter(file, "UTF-8"); 
writer.println("print content here"); 
writer.close(); 
+0

Warum kann ich den im gepufferten Writer eingepackten Dateischreiber nicht verwenden? – shiwchiz

+0

Sie können, aber Sie müssen wissen, Hoe Buffer schreiben in Datei. Wie konvertiert er Inhalte? (utf-8? ansi?) – CodeWizard

+0

Kannst du mir bitte sagen, wie man mit Dateischreiber und gepuffertem Schreiber schreibt? – shiwchiz

0

Das Problem ist, dass Sie die FileWriter schließen anstatt die BufferedWriter. Dies bedeutet, dass Ihre Anwendung mit ungeschriebenen Zeichen im Puffer BufferedWriter beendet wird.

Lösung: Änderung

fw.close();  

zu

writer.close(); 

Schließen des BufferedWriter die Writer schließen wird, die es umschließt. Der Javadoc sagt es.

(Sie brauchen nicht auf die Reader zu schließen. Die Scanner schließen, wird die Quelle schließen, die es umschließt. Und außerdem ist weder streng in diesem Zusammenhang notwendig. Aber siehe unten.)


Auch Wenn dies der Produktionscode ist, ist es ratsam, mit den Ressourcen zu verwenden, um sicherzustellen, dass die Dateideskriptoren immer geschlossen sind, unabhängig davon, wie die Methode beendet wurde. Wenn die Methode beendet wird, weil eine Ausnahme ausgelöst wurde, können Sie die Anweisungen überspringen, die die Reader oder Writer Stapel schließen. Dies könnte zu einem Ressourcenverlust und unerwarteten Fehlern beim Öffnen von Dateien führen ... später.

+0

Vielen Dank Herr! – shiwchiz

Verwandte Themen