Mam problem z moim utworzonym plikiem zip. Używam Java 7. Próbowałem utworzyć plik zip z tablicy bajtowej, która zawiera dwa lub więcej plików Excel. Aplikacja kończy się bez żadnych wyjątków. Więc myślałem, że wszystko jest w porządku. Po próbie otwarcia pliku zip pojawił się komunikat o błędzie z systemu Windows 7, że plik zip może być uszkodzony. Nie mogłem go otworzyć i nie mam pojęcia, dlaczego ...! Przeszukałem ten problem, ale znalezione fragmenty kodu wyglądają dokładnie tak samo, jak w mojej implementacji.Tworzenie pliku zip w pamięci poza bajtem []. Plik ZIP jest zawsze uszkodzony
To jest mój kod:
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)
{
...
}
}
To musi być bardzo prosty awarii, ale nie mogę go znaleźć. Byłoby miło, gdybyś pomógł mi z moim problemem. Dziękuję bardzo z góry.
Koleś, jesteś moim bohaterem na dzisiaj! :-) W końcu działa. :-)) – F4k3d