Hi, My solution didn't pass (althought it worked on my computer,for what I could see) until I take a look at the help section and test the ByteArrayOutputStream In my solution, to save content of the differents ZipEntry I used a buffer sized thanks the ZipEntry class getSize method and success to store in it the content by using the read(byte[]) method of ZipInputStream, and later I used this buffer to write in the corresponding file in the new folder zip Why doesn't it work like this ? My solution :
while ((ze = zipIn.getNextEntry()) != null) {
     byte [] b = new byte[(int) ze.getSize()];

     zipIn.read(b);
     zipEntries.put(ze,b)
}
Solution which passed :
while ((ze = zipIn.getNextEntry()) != null) {
     byte[] buffer = new byte[1024];
     ByteArrayOutputStream builder = new ByteArrayOutputStream();
     int end;
     while ((end = zipIn.read(buffer)) > 0) {
          builder.write(buffer, 0, end);
     }
     zipEntries.put(ze, builder.toByteArray());
}
Thanks a lot for your help, and sorry for bad english.