Я пытаюсь добавить ZipEntry
в ZipOutputStream
, но у меня возникают проблемы при попытке записать байты.java.util.zip.ZipException при добавлении ZipEntry к ZipOutputStream без ZipInputStream
Я получил ZipEntry
от HashMap
, который сопоставляет имена файлов с их ZipEntries
. Я выбрал этот метод, потому что я имею дело с большим ZipInputStream
, и я хочу иметь доступ к его содержимому проще, чем перебирать через InputStream
и искать файл и получать его ZipEntry
.
Это вызывает проблему, когда я пытаюсь записать байты после добавления записи. Все решения, которые я нашел до сих пор, нуждались в ZipInputStream
.
Вот код:
ZipEntry ze = entryHash.get(pathToString(path));
zos.putNextEntry(ze);
zos.write(new byte[(int)ze.getSize()]); // Problem Here
zos.closeEntry();
Ошибка я получаю:
java.util.zip.ZipException: invalid entry compressed size (expected 389 but got 12 bytes)
at java.util.zip.ZipOutputStream.closeEntry(ZipOutputStream.java:248)
Как я могу исправить это исключение?
Тогда в чем проблема? –
вам нужно написать файл в этот момент ... – njzk2
java.util.zip.ZipException: недопустимый размер записи сжатый (ожидается 389, но получил 12 байтов) - это моя ошибка. Что значит писать файл? Вы хотите закрыть ZipOutputStream? Я хочу добавить еще, прежде чем я это сделаю. Спасибо за очень быстрые ответы! – vohab