无法在java中使用java.util.zip创建zip文件,导致存档损坏

时间:2016-09-09 18:28:09

标签: java

我可以使用一些pdf创建zip文件夹。但是当我解压缩时,它会让档案变得腐败。 这是我试过的代码。

0a1
> cth
9,10c10,11
<     BaseUri: {ms-appx:///com/rufwork/mumd/UI/CloseableTabs.xaml}
---
>     BaseUri: {ms-appx:///CloseableTabHeader.xaml}
39c40
<     Height: 200
---
>     Height: NaN
85c86
<     Width: 200
---
>     Width: NaN

请让我知道我在哪里做错了。

2 个答案:

答案 0 :(得分:0)

在您将zout的内容写入回复信息流后,您正在刷新,完成并关闭bos

首先完成编写zip数据,然后将数据写入响应,这样才能正确。

答案 1 :(得分:0)

我得到了解决方案。

            //create byte buffer
            byte[] buffer = new byte[1024];
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            ZipOutputStream zout = new ZipOutputStream(bos);

            zout.putNextEntry(new ZipEntry("first.pdf"));
            int length;

            while((length = content.getInputStream().read(buffer)) > 0)
            {
                zout.write(buffer, 0, length);
            }
             zout.flush();
            zout.finish();
            bos.flush();
            resp.setContentType(CONTENT_TYPE_ZIP);
            resp.setHeader("Content-Disposition", "inline;filename= first.zip");
            resp.getOutputStream().write(bos.toByteArray());
            pdfMsOfficeCacheHeaderUtil.process(request, resp);
            resp.flushBuffer();               
            zout.close();
            bos.close();

它对我有用。