Ist es möglich, ein File-Objekt aus InputStream zu erstellen
Lesezeit: 3 Minuten
androidgalaxyman
Gibt es eine Möglichkeit, eine java.io.File Objekt aus einem java.io.InputStream ?
Meine Anforderung ist das Lesen der Datei aus einem RAR . Ich versuche nicht, eine temporäre Datei zu schreiben, ich habe eine Datei im RAR-Archiv, die ich zu lesen versuche.
Meine Anforderung ist das Lesen der Datei aus einem RAR. Angenommen, ich versuche nicht, die temporäre Datei aus dem RAR zu schreiben, in RAR habe ich eine Datei, die ich nur lesen muss.
– androidgalaxyman
16. Juli 2012 um 10:24 Uhr
Ich verstehe die Frage nicht. Bitte klären Sie. Wenn Sie die Originaldatei aus dem InputStream möchten, gab es keine: Sie lesen eine RAR-Datei, keine Datei. Wenn du etwas anderes willst, was?
– Benutzer207421
16. Juli 2012 um 10:40 Uhr
Mögliches Duplikat von How to convert InputStream to virtual File
– Paulo Oliveira
14. Juni 2017 um 9:18 Uhr
Tomasz Nurkiewicz
Sie müssen eine neue Datei erstellen und deren Inhalt kopieren InputStream zu dieser Datei:
File file = //...
try(OutputStream outputStream = new FileOutputStream(file)){
IOUtils.copy(inputStream, outputStream);
} catch (FileNotFoundException e) {
// handle exception here
} catch (IOException e) {
// handle exception here
}
Ich benutze bequem IOUtils.copy() um das manuelle Kopieren von Streams zu vermeiden. Außerdem hat es eine eingebaute Pufferung.
IOUtils konnten in Android Studio nicht aufgelöst werden und der Link, auf den Sie verwiesen haben, ist ein 404.
– Shahraiz T.
24. November 2016 um 5:07 Uhr
org.apache.directory.studio:org.apache.commons.io musste als Abhängigkeit hinzugefügt werden. Mein Fehler. 🙂
– Shahraiz T.
24. November 2016 um 5:16 Uhr
Bitte schließen Sie den OutputStream korrekt, verwenden Sie einen Versuch mit Ressourcen oder IOUtils.closeQuietly. Ich weiß, es ist nur ein Beispiel, aber Anfänger werden es wörtlich kopieren.
– Rafael Membrives
30. August 2017 um 7:35 Uhr
Kann jemand File file = //… erklären? Wie initialisiere ich die Datei zuerst?
@MauriceNino Mein Fehler, danke für einen Kommentar “try-with-resources – released in Java 7”
– MariuszS
28. September 2020 um 12:09 Uhr
Wenn Sie keine anderen Bibliotheken verwenden möchten, finden Sie hier eine einfache Funktion, um Daten aus einer zu kopieren InputStream zu einem 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 ganz einfach eine schreiben Inputstream in eine Datei mit FileOutputStream–
FileOutputStream out = new FileOutputStream(outFile);
copyStream (inputStream, out);
out.close();
Welcher Teil davon erfordert Java 11?
– Maurice Nino
28. September 2020 um 9:34 Uhr
@MauriceNino Mein Fehler, danke für einen Kommentar “try-with-resources – released in Java 7”
– MariuszS
28. September 2020 um 12:09 Uhr
h3xStream
Wenn Sie Java Version 7 oder höher verwenden, können Sie verwenden Versuch-mit-Ressourcen richtig zu schließen FileOutputStream. Die folgende Codeverwendung IOUtils.copy() aus commons-io.
public void copyToFile(InputStream inputStream, File file) throws IOException {
try(OutputStream outputStream = new FileOutputStream(file)) {
IOUtils.copy(inputStream, outputStream);
}
}
Müssen Sie den OutputStream nicht schließen? Wie in der Antwort von Tomasz N.
– Trinity420
24. September 2018 um 12:40 Uhr
@trinity420 Ressourcen, die in der angegeben sind try Initialisierungsteil werden automatisch geschlossen, wenn die try Block wird verlassen.
– h3xStream
26. September 2018 um 18:33 Uhr
gilt das für Android?
– Gumuruh
17. Dezember 2020 um 2:55 Uhr
@gumuruh Ja. stackoverflow.com/a/24290875/89769
– h3xStream
17. Dezember 2020 um 8:26 Uhr
13454900cookie-checkIst es möglich, ein File-Objekt aus InputStream zu erstellenyes
Meine Anforderung ist das Lesen der Datei aus einem RAR. Angenommen, ich versuche nicht, die temporäre Datei aus dem RAR zu schreiben, in RAR habe ich eine Datei, die ich nur lesen muss.
– androidgalaxyman
16. Juli 2012 um 10:24 Uhr
Ich verstehe die Frage nicht. Bitte klären Sie. Wenn Sie die Originaldatei aus dem InputStream möchten, gab es keine: Sie lesen eine RAR-Datei, keine Datei. Wenn du etwas anderes willst, was?
– Benutzer207421
16. Juli 2012 um 10:40 Uhr
Mögliches Duplikat von How to convert InputStream to virtual File
– Paulo Oliveira
14. Juni 2017 um 9:18 Uhr