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.