2012-06-18 13 views
5

Ich muss den Inhalt einer Datei löschen, bevor ich weitere Informationen hinein schreibe. Ich habe verschiedene Möglichkeiten ausprobiert, zum Beispiel, wo ich den Inhalt lösche, aber die Datei bleibt gleich groß, und wenn ich nach dem Löschen mit dem Schreiben anfange, erscheint ein leeres Loch vor dem Schreiben meiner neuen Daten .Löschen von Datei-Inhalten android

Dies ist, was ich versucht habe ...

BufferedWriter bw; 
try { 
    bw = new BufferedWriter(new FileWriter(path)); 
    bw.write(""); 
    bw.close(); 
} 
catch (IOException e) { 
    e.printStackTrace(); 
} 

Und ich habe dies auch versucht ...

File f = new File(file); 
FileWriter fw; 

try { 
    fw = new FileWriter(f,false); 
    fw.write(""); 
} 
catch (IOException e) { 
    e.printStackTrace(); 
} 

Kann mir bitte jemand eine Lösung zu diesem Problem helfen.

+0

Kann nicht die Datei einfach löschen und eine neue leere erstellen? – Dalmas

+0

Nein, ich muss die gleiche Datei sein, aber danke für Ihre Antwort – kassy

Antwort

0

Versuchen Sie, flush() anrufen, bevor Sie close() aufrufen.

FileWriter writer = null; 

try { 
    writer = ... // initialize a writer 
    writer.write(""); 
    writer.flush(); // flush the stream 
} catch (IOException e) { 
    // do something with exception 
} finally { 
    if (writer != null) { 
     writer.close(); 
    } 
} 
+0

Ich habe versucht, aber es ist immer noch das gleiche. Ich verstehe nicht. Danke für Ihre Antwort – kassy

9
FileWriter (path, false) 

Der falsche wird der Schriftsteller sagen, die Datei statt anhängen, um es abzuschneiden.

+0

Ja, das ist was ich will, weil ich den Inhalt der Datei löschen möchte. – kassy

+0

Sorry, hab das falsche im zweiten Code dort nicht gesehen. – mbwasi

0

Es könnte sein, weil Sie den FileWriter nicht schließen, fw.close(); Außerdem müssen Sie die alten Daten nicht löschen, sondern einfach mit dem Schreiben beginnen und die alten Daten überschreiben. Also stell sicher, dass du dich überall schließt.

Dies funktioniert für mich:

File f=new File(file); 
    FileWriter fw; 
    try { 
     fw = new FileWriter(f); 
     fw.write(""); 
     fw.close(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    }