170 Stimmen

Ist es möglich, ein File-Objekt aus InputStream zu erstellen

Gibt es eine Möglichkeit, ein java.io.File-Objekt aus einem java.io.InputStream zu erstellen?

Meine Anforderung besteht darin, die Datei aus einem RAR zu lesen. Ich versuche nicht, eine temporäre Datei zu schreiben, ich habe eine Datei im RAR-Archiv, die ich zu lesen versuche.

10voto

Nabin Bhandari Punkte 15154

Wenn Sie keine anderen Bibliotheken verwenden möchten, hier ist eine einfache Funktion zum Kopieren von Daten von einem InputStream in einen OutputStream.

public static void copyStream(InputStream in, OutputStream out) throws IOException {
    byte[] buffer = new byte[1024];
    int read;
    while ((read = in.read(buffer)) != -1) {
        out.write(buffer, 0, read);
    }
}

Jetzt können Sie einfach einen InputStream in eine Datei schreiben, indem Sie FileOutputStream verwenden-

FileOutputStream out = new FileOutputStream(outFile);
copyStream (inputStream, out);
out.close();

1voto

h3xStream Punkte 5907

Wenn Sie Java-Version 7 oder höher verwenden, können Sie try-with-resources verwenden, um den FileOutputStream ordnungsgemäß zu schließen. Der folgende Code verwendet IOUtils.copy() von commons-io.

public void copyToFile(InputStream inputStream, File file) throws IOException {
    try(OutputStream outputStream = new FileOutputStream(file)) {
        IOUtils.copy(inputStream, outputStream);
    }
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X