Я пытаюсь изменить файл в zip-файле с помощью java.util.net Поскольку прямое изменение файла невозможно, и я хочу изменить только один файл, я просто создаю новый zip-файл, содержащий в основном содержимое шаблон и заменить конкретный файл, по крайней мере, таков план.
Вот самые важные строчки моей попытки:
Enumeration<? extends ZipEntry> entries = zif.entries();
while (entries.hasMoreElements()) {
ZipEntry currentEntry = entries.nextElement();
if (!currentEntry.isDirectory() && currentEntry.getSize() >0 && currentEntry.getCompressedSize() > 0)
{
System.out.println(currentEntry.getName() + ": " + currentEntry.getSize() + "-" + currentEntry.getMethod());
if (currentEntry.getName() != "file_i_want_to_change")
{
try {
this.zos.putNextEntry(currentEntry); // HERE the exception is thrown
} catch (IOException e) {
e.printStackTrace();
System.out.println(e.getMessage());
}
}
}
Информация: zif = ZipFile, правильно созданный и открытый из существующего файла; zos = ZipOutputStream, правильно созданный для нового файла.
Это выброшенное исключение:
java.util.zip.ZipException: invalid entry size (expected 39 but got 0 bytes)
at java.util.zip.ZipOutputStream.closeEntry(ZipOutputStream.java:228)
at java.util.zip.ZipOutputStream.putNextEntry(ZipOutputStream.java:144)
at TestClass.replace(TestClass.java:117)
at TestClass.main(TestClass.java:10)
тогда как TestClass: 117 - это строка с комментарием, где она терпит неудачу.
Забавно то, что System.out.println в этом фрагменте кода работает отлично и без каких-либо отчетов о размере файла 0.
Кто-нибудь видит ошибку, которую я мог сделать?
Любая идея приветствуется.
Заранее спасибо и с наилучшими пожеланиями