Erstellen Sie eine Datei aus einem ByteArrayOutputStream

77

Kann jemand erklären, wie ich ein Dateiobjekt bekommen kann, wenn ich nur ein habe ByteArrayOutputStream. Wie erstelle ich eine Datei aus einem ByteArrayOutputStream?

Al Phaba
quelle

Antworten:

137

Sie können dies mit a FileOutputStreamund der writeToMethode tun .

ByteArrayOutputStream byteArrayOutputStream = getByteStreamMethod();
try(OutputStream outputStream = new FileOutputStream("thefilename")) {
    byteArrayOutputStream.writeTo(outputStream);
}

Quelle: "Erstellen einer Datei aus ByteArrayOutputStream in Java." zu Code-Erfindungen

Suresh Atta
quelle
20
und dann auch schließen.
Markus Mikkolainen
1
@ MarkusMikkolainen ja .. offensichtlich :)
Suresh Atta
9
Oder verwenden Sie Java 7 versuchen Sie mit Ressourcen Anweisung, um endgültig Block vollständig loszuwerden;) stackoverflow.com/questions/2016299/…
dimuthu
Was ist, wenn ich keinen "thefilename" habe, wenn ich einen Byte-Stream von diesem Excel habe? Was ist dann der Weg?
Dänisch
26

Sie können hierfür einen FileOutputStream verwenden.

FileOutputStream fos = null;
try {
    fos = new FileOutputStream(new File("myFile")); 
    ByteArrayOutputStream baos = new ByteArrayOutputStream();

    // Put data in your baos

    baos.writeTo(fos);
} catch(IOException ioe) {
    // Handle exception here
    ioe.printStackTrace();
} finally {
    fos.close();
}
JREN
quelle
10
Ihr Code funktioniert nicht fosim tryBlock. Auch new File()ist nicht erforderlich.
Ludovic Guillaume
Es ist gut, dass er "new File ()" hinzugefügt hat. Für den Leser ist es einfacher zu wissen, dass ein Dateikonstruktor verfügbar ist.
Buffalo
Dies scheint für Android erforderlich zu sein.
Keith Holliday
Kann mit fos in try-with-resources () verbessert werden und das endgültige
vikingsteve