Я пытаюсь изменить файл в 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.
Кто-нибудь видит ошибку, которая у меня может быть?сделано?
Любая идея приветствуется.
Заранее спасибо и наилучшими пожеланиями