У меня проблема с созданным zip-файлом. Я использую Java 7. Я попытался создать zip-файл из массива байтов, который содержит два или более файла Excel. Приложение всегда заканчивается без каких-либо исключений. Итак, я подумал, что все в порядке. После того как я попытался открыть zip-файл, в Windows 7 появилось сообщение об ошибке, что zip-файл может быть поврежден. Я не мог открыть его, и я понятия не имею, почему ...! Я искал эту проблему, но найденные фрагменты кода выглядят точно так же, как и в моей реализации.Создание zip-файла в памяти из байта []. Zip-файл всегда поврежден
Это мой код:
if (repsList.size() > 1)
{
String today = DateUtilities.convertDateToString(new Date(), "dd_MM_yyyy");
String prefix = "recs_" + today;
String suffix = ".zip";
ByteArrayOutputStream baos = null;
ZipOutputStream zos = null;
try
{
baos = new ByteArrayOutputStream();
zos = new ZipOutputStream(baos);
for (RepBean rep : repsList)
{
String filename = rep.getFilename();
ZipEntry entry = new ZipEntry(filename);
entry.setSize(rep.getContent().length);
zos.putNextEntry(entry);
zos.write(rep.getContent());
zos.closeEntry();
}
// this is the zip file as byte[]
reportContent = baos.toByteArray();
}
catch (UnsupportedEncodingException e)
{
...
}
catch (ZipException e) {
...
}
catch (IOException e)
{
...
}
finally
{
try
{
if (zos != null)
{
zos.close();
}
if (baos != null)
{
baos.close();
}
}
catch (IOException e)
{
// Nothing to do ...
e.printStackTrace();
}
}
}
try
{
response.setContentLength(reportContent.length);
response.getOutputStream().write(reportContent);
}
catch (IOException e)
{
...
}
finally
{
try
{
response.getOutputStream().flush();
response.getOutputStream().close();
}
catch (IOException e)
{
...
}
}
Это должно быть очень простой сбой, но я не могу найти его. Было бы неплохо, если бы вы помогли мне с моей проблемой. Большое спасибо.
Чувак, ты мой герой на сегодняшний день! :-) Это работает, наконец. :-)) – F4k3d