У меня проблема с сжатием ZIP-файла с использованием Java. Метод приведен ниже.Сжатие ZIP-файла с использованием Java ZipFile class
Структура файла правильная, если файл сжимается, что означает, что каталоги находятся в файле ZIP, но выходные файлы имеют нулевую длину.
Я проверил файл ZIP, чтобы проверить, правильно ли выполнено сжатие.
Пожалуйста, если кто-то видит что-то я пропустил ...
public static void unzip (File zipfile, File directory) throws IOException {
ZipFile zip = new ZipFile (zipfile);
Enumeration<? extends ZipEntry> entries = zip.entries();
while (entries.hasMoreElements()) {
ZipEntry entry = entries.nextElement();
File file = new File (directory, entry.getName());
if (entry.isDirectory()) {
file.mkdirs();
}
else {
file.getParentFile().mkdirs();
ZipInputStream in = new ZipInputStream (zip.getInputStream (entry));
OutputStream out = new FileOutputStream (file);
byte[] buffer = new byte[4096];
int readed = 0;
while ((readed = in.read (buffer)) > 0) {
out.write (buffer, 0, readed);
out.flush();
}
out.close();
in.close();
}
}
zip.close();
}
Что-то еще ... По-видимому, метод getInputStream (запись) возвращает ноль байт, не знаю, почему именно.
Вы пробовали какую-то отладку? Вызывает ли вызов in.read() несколько байтов или нет? – leonbloy
Не смывайте внутри петли. – EJP