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 :
Ensuite j'enregistre le inputStream sous forme d'un fichier (archive ZIP) avec la méthode suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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;
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....??
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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); } } }
Est-ce quelqu'un à une idée afin que je puisse faire cela svp ??
Merci d'avance.
Partager