Gibt es eine Möglichkeit, ein java.io.File
Objekt aus einem zu erstellen java.io.InputStream
?
Meine Anforderung ist das Lesen der Datei von einem RAR. Ich versuche nicht, eine temporäre Datei zu schreiben. Ich habe eine Datei im RAR-Archiv, die ich lesen möchte.
Antworten:
Sie müssen eine neue Datei erstellen und Inhalte aus
InputStream
dieser Datei kopieren :Ich verwende bequem
IOUtils.copy()
, um das manuelle Kopieren von Streams zu vermeiden. Es hat auch eine integrierte Pufferung.quelle
In einer Zeile:
(org.apache.commons.io)
quelle
Erstellen Sie zuerst eine temporäre Datei.
quelle
Seit Java 7 können Sie dies in einer Zeile tun, auch ohne externe Bibliotheken zu verwenden:
Siehe die API-Dokumente .
quelle
Wenn Sie nicht verwenden , um andere Bibliothek wollen, hier ist eine einfache Funktion konvertieren
InputStream
zuOutputStream
.Jetzt können Sie einfach eine
Inputstream
Datei mitFileOutputStream
- schreiben.quelle
Einfache Java 11 - Lösung mit Versuch mit Ressourcen blockieren
java.io.InputStream # transferTo ist seit Java 9 verfügbar.
quelle
Wenn Sie Java Version 7 oder höher verwenden, können Sie Try-with-Resources verwenden, um das Programm ordnungsgemäß zu schließen
FileOutputStream
. Der folgende Code wirdIOUtils.copy()
von commons-io verwendet .quelle
try
Initialisierungsteil angegebenen Ressourcen werden beimtry
Verlassen des Blocks automatisch geschlossen .