IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

Entr�e/Sortie Java Discussion :

Probl�me pour convertir un tableau de byte en un inputStream.


Sujet :

Entr�e/Sortie Java

  1. #1
    Membre �clair� Avatar de fab76000
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    311
    D�tails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 311
    Par d�faut 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 : 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;
    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
    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.

  2. #2
    Mod�rateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 585
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 585
    Par d�faut
    On n'utilise pas des Reader et des Writer quand on manipule des bytes. On utilise des InputStream et des OutputStream.

    Sinon, les caract�res invalides vont �tre transform�s en ? et autres bizarreries, et ton zip sera corrompu.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre �clair� Avatar de fab76000
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    311
    D�tails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 311
    Par d�faut
    Merci beaucoup pour ta remarque, effectivement tu avais raison, mon zip n'est plus corrompu en ne manipulant que des streams.

    Encore merci

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. probl�me pour trier un tableau de hashage
    Par Jasmine80 dans le forum Langage
    R�ponses: 1
    Dernier message: 25/02/2007, 13h02
  2. [Tableaux] Probl�me pour contr�ler un tableau
    Par renaud26 dans le forum Langage
    R�ponses: 5
    Dernier message: 10/04/2006, 11h45
  3. [C#] Probl�me pour convertir .Color en .Brush
    Par pymouse dans le forum Windows Forms
    R�ponses: 2
    Dernier message: 19/05/2005, 15h19
  4. [C#] Convertir un tableau de byte en Image
    Par goulhasch dans le forum ASP.NET
    R�ponses: 4
    Dernier message: 24/01/2005, 10h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo