Problème pour convertir un tableau de byte en un inputStream.
Bonjour à tous,
Dans mon application (JSF) j'upload une archive ZIP (via un composant richfaces) qui me permet de récupérer l'archive sous forme d'un tableau de byte. Je veux ensuite le transformer en un inputStream.
Après avoir cherché un peu, le code suivant me permet cela :
Code:
1 2 3 4 5 6 7 8 9 10 11
| byte[] contenuFichier = item.getData();
int taille = (int) item.getFileSize();
byte[] buf = new byte[taille];
ByteArrayInputStream bin = new ByteArrayInputStream(contenuFichier);
bin.read(buf);
InputStream in = new ByteArrayInputStream(buf) ;
return in; |
Ensuite j'enregistre le inputStream sous forme d'un fichier (archive ZIP) avec la méthode suivante :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| File file = new File(filePath);
if (file.exists()) {
throw new FichierExistantException(String.format("Le fichier '%s' existe déjà. Impossible de remplacer ce fichier.", filePath));
}
OutputStreamWriter writer = null;
BufferedReader reader = null;
try {
reader = new BufferedReader(new InputStreamReader(inputStreamContent));
file.createNewFile();
if (deleteOnExit) {
file.deleteOnExit();
}
writer = new OutputStreamWriter(new FileOutputStream(file));
String line = reader.readLine();
while (line != null) {
writer.append(line);
writer.append(PropertiesUtils.EOL);
line = reader.readLine();
}
writer.flush();
} catch (IOException e) {
throw new EcritureFichierException(String.format("Problème d'écriture dans le fichier '%s'.", filePath), e);
} finally {
// Close writer
if (writer != null) {
try {
writer.close();
} catch (IOException e) {
throw new EcritureFichierException(String.format("Problème de fermeture du fichier '%s'.", filePath), e);
}
}
// Close reader
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
throw new EcritureFichierException(String.format("Problème de fermeture de l'input stream utilisé à l'écriture du fichier '%s'.",
filePath), e);
}
}
} |
Avec ce code, mon archive est bien crée, cependant elle n'est pas identique à celle uploadée, certains fichiers ne sont pas compréssés à l'identique, des fichiers sont donc corrompus....??
Est-ce quelqu'un à une idée afin que je puisse faire cela svp ??
Merci d'avance.