Несоответствие между размером ZipEntry для ZipInputStream и JarInputStream

У меня есть куча файлов изображений в zip-файле, которые я читаю с помощью ZipInputStream и итерации над ZipEntry из апплета.

   ZipInputStream zis = new ZipInputStream(in);
        ZipEntry ze = null;
        while ((ze = zis.getNextEntry()) != null) {
            htSizes.put(ze.getName(), new Integer((int) ze.getSize()));
            if (ze.isDirectory()) {
                continue;
            }
            int size = (int) ze.getSize();
            // -1 means unknown size.
            if (size == -1) {
                size = ((Integer) htSizes.get(ze.getName())).intValue();
            }
            byte[] b = new byte[(int) size];
            int rb = 0;
            int chunk = 0;
            while (((int) size - rb) > 0) {
                chunk = zis.read(b, rb, (int) size - rb);
                if (chunk == -1) {
                    break;
                }
                rb += chunk;
            }
            // add to internal resource hashtable
            htJarContents.put(ze.getName(), b);
        }

Однако когда я помещаю эти изображения в подписанный jar "ze.getSize()" приходит как -1, и файл изображения считывается неправильно.

Может ли кто-нибудь помочь мне в этом вопросе.

5
задан Roman C 29 April 2013 в 15:59
поделиться