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 :
- byte[] ba = GetmyByteArray();
- /* => ba.length=182029 */
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- ZipOutputStream zos =new ZipOutputStream(baos);
- zos.setLevel(9);
- zos.setMethod(ZipOutputStream.DEFLATED);
- ZipEntry ze = new ZipEntry("toto" );
- ze.setSize(ba.length);
- zos.putNextEntry(ze);
- zos.write(ba);
- zos.closeEntry();
- zos.close();
- byte[] baZipped = baos.toByteArray();
- pstSTATEMENT.setBytes(i+1, baZipped);
- /* => baZipped.length = 179253 */
|
Pour dézipper :
Code :
- Blob bResult = myResultSet.getBlob(iCOL);
- /* => The Blob has the good size (same as baZipped.length) */
- InputStream bais = bResult.getBinaryStream();
- ZipInputStream zipReader = new ZipInputStream(bais);
- ZipEntry ze = zipReader.getNextEntry();
- /* => ZipEntry has "toto" as name => OK */
- /* => ZipEntry has -1 as size and as compressedSize => beuh */
- int i = zipReader.read(buf) ;
- int i = zipReader.read(buf, 0, 182029);
- /* => both return 858 instead of 182029 */
|
Merci de votre aide,
Raphael.