ZInputStream / ZOutputStream en Francais

ZInputStream / ZOutputStream en Francais - Java - Programmation

Marsh Posté le 07-01-2005 à 13:15:57    

bonjour à tous et désolé, j'ai posté un message précédent en Anglais...
 
Je disais donc que je voudrais zipper un tableau de bytes (byte[]) dans une base de données.
Pour zipper, ca a l'air de fonctionner comme je veux, puis je le mets dans un BLOB, ok puis je récupère le BLOB de la base de données (ok, bonne taille) puis je n'arrive pas à dézipper.
 
Voici mon code :
POUR ZIPPER :  

Code :
  1. byte[] ba = GetmyByteArray();
  2. /* => ba.length=182029 */
  3. ByteArrayOutputStream baos = new ByteArrayOutputStream();
  4. ZipOutputStream zos =new ZipOutputStream(baos);
  5. zos.setLevel(9);
  6. zos.setMethod(ZipOutputStream.DEFLATED);
  7. ZipEntry ze = new ZipEntry("toto" );
  8. ze.setSize(ba.length);
  9. zos.putNextEntry(ze);
  10. zos.write(ba);
  11. zos.closeEntry();
  12. zos.close();
  13. byte[] baZipped = baos.toByteArray();
  14. pstSTATEMENT.setBytes(i+1, baZipped);
  15. /* => baZipped.length = 179253 */


 
Pour dézipper :  

Code :
  1. Blob bResult = myResultSet.getBlob(iCOL);
  2. /* => The Blob has the good size (same as baZipped.length) */
  3. InputStream bais = bResult.getBinaryStream();
  4. ZipInputStream zipReader = new ZipInputStream(bais);
  5. ZipEntry ze = zipReader.getNextEntry();
  6. /* => ZipEntry has "toto" as name => OK */
  7. /* => ZipEntry has -1 as size and as compressedSize => beuh */
  8. int i = zipReader.read(buf) ;
  9. int i = zipReader.read(buf, 0, 182029); 
  10. /* => both return 858 instead of 182029 */


 
Merci de votre aide,
 
Raphael.

Reply

Marsh Posté le 07-01-2005 à 13:15:57   

Reply

Marsh Posté le 07-01-2005 à 15:13:49    

En fait, il semblerait que l'on puisse faire comme ca aussi (mais j'ai essayé, et j'ai toujours le meme pb) :
ZIP :

Code :
  1. ByteArrayOutputStream baos = new ByteArrayOutputStream();
  2. DeflaterOutputStream dos = new DeflaterOutputStream(baos);
  3. dos.write(ba);
  4. dos.close();


UNZIP :

Code :
  1. InflaterInputStream iis = new InflaterInputStream(bResult.getBinaryStream());
  2. iis.read(buf);


Le pb que je rencontre aussi ici, c'est de savoir quelle taille donner à mon buf ...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed