2016-04-15 12 views
0

Ich schreibe in eine Datei über eine FileOutputStream, die über ihren Konstruktor unter FileDescriptor geöffnet wird.FileOutputStream (FileDescriptor), der Daten überschreibt anstatt Daten anzufügen?

Mein gewünschtes Verhalten: Wenn ich in die Datei schreibe möchte ich, dass der einzige Inhalt davon ist. Z.B. Schreiben "Hallo" sollte dazu führen, dass die Datei nur "Hallo" enthält.

Tatsächliches Verhalten: Jedes Mal, wenn ich etwas schreibe, wird es einfach angefügt. Z.B. Im obigen Beispiel bekomme ich "HelloHello".


Wie kann ich ein Outputstream wie Im tun, und haben es nicht in Anfügemodus sein?

Hinweis: Ich bin gezwungen, einen FileDescriptor zu verwenden.

+0

http://stackoverflow.com/a/20398873/115145 – CommonsWare

+0

Dank @CommonsWare, fand ich, dass die Post vor als gut, aber beschlossen, meine Frage in der Hoffnung auf eine andere Art und Weise zu schreiben, die einfach nicht überschreibt als Verkürzungen und dann schreibt. Ich arbeite mit großen Dateien. – zoltish

+0

Ich würde denken, dass "einfach überschreibt" das gleiche wie "abschneidet und dann schreibt". – CommonsWare

Antwort

0

Wenn Sie FileOutoutStream verwenden, bietet der ctor eine Option, mit der Sie angeben können, ob Sie die anzuhängende Datei öffnen möchten oder nicht. Setze es auf false und es wird funktionieren.

OutputStream out = null; 
    try { 
     out = new FileOutputStream("OutFile", false); 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } 
0

Fileoutputstream output;

try { 

     outputStream = openFileOutput("your_file", Context.MODE_PRIVATE); 
     //Context.MODE_PRIVATE -> override/MODE_APPEND -> append 
     outputStream.write("your content"); 
     outputStream.close(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
Verwandte Themen