2010-12-31 4 views
1

Ich bekomme Brocken von Bytes vom Server und ich muss sie in eine Datei schreiben, ohne den alten Brocken zu überschreiben. wie kann ich das machen? ich es auf diese Weise tue ..Wie schreibe ich Bytes in eine Datei ohne es zu überschreiben

private void createMapFile(String fileName, byte mapBytes[]) throws IOException 
    {  
     File filePath = new File(Environment.getExternalStorageDirectory()+"/map/"+fileName); 

     PrintWriter pw = new PrintWriter(new FileOutputStream(filePath, true)); 
     pw.print(mapBytes); 
     pw.flush(); 
     pw.close(); } 

meine diese Methode nimmt den Dateinamen und Batzen Bytes als Argument. Immer wenn ich einen neuen Brocken vom Server bekomme, wird diese Methode aufgerufen. Mit dieser Methode kann ich nicht alle Chunks in einer Datei schreiben.

jede Hilfe wird dankbar sein. dank

Antwort

4

PrintWriter wird zum Schreiben von Text in Dateien verwendet und unterstützt das Schreiben von Rohbytes nicht. FileOutputStream bietet alles, was Sie brauchen:

FileOutputStream os = new FileOutputStream(filePath, true); 
os.write(mapBytes); 
os.close(); 
1

Verwenden pw.append(bytes); oder

Verwenden Sie den Fileoutputstream anhängen Konstruktor FileOutputStream(File file, boolean append)

der Konstruktor-Methode verwendet, wird wahrscheinlich etwas effizienter als die Datei kann jedes Mal, bis zum Ende, ohne zu suchen, in Zufügen-Modus geöffnet werden . Allerdings bin ich mir nicht sicher, also sollten Sie in Ihrer eigenen Umgebung testen, ob Ihnen das wichtig ist.

Ignorieren Sie auch nicht den Rat von kgiannakakis. Er hat Recht, dass PrintWriter Text und keine Binärdaten erwartet.

Verwandte Themen