Existe-t-il un moyen de créer un objet java.io.File
partir d'un objet java.io.InputStream
?
J'ai besoin de lire le fichier d'un RAR . Je n'essaie pas d'écrire un fichier temporaire, j'ai un fichier dans l'archive RAR que j'essaie de lire.
Existe-t-il un moyen de créer un objet java.io.File
partir d'un objet java.io.InputStream
?
J'ai besoin de lire le fichier d'un RAR . Je n'essaie pas d'écrire un fichier temporaire, j'ai un fichier dans l'archive RAR que j'essaie de lire.
Vous devez créer un nouveau fichier et copier le contenu de InputStream
vers ce fichier :
File file = //...
try(OutputStream outputStream = new FileOutputStream(file)){
IOUtils.copy(inputStream, outputStream);
} catch (FileNotFoundException e) {
// handle exception here
} catch (IOException e) {
// handle exception here
}
J'utilise IOUtils.copy()
pour éviter la copie manuelle des flux. Il dispose également d'un tampon intégré.
Si vous ne souhaitez pas utiliser d'autres bibliothèques, voici une fonction simple pour copier des données d'un InputStream
à un 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);
}
}
Maintenant, vous pouvez facilement écrire un Inputstream
dans un fichier en utilisant FileOutputStream
-
FileOutputStream out = new FileOutputStream(outFile);
copyStream (inputStream, out);
out.close();
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.