作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发从一个 zip 中获取文件并将它们放入另一个 zip 的应用程序,它对文件没问题,但如果源 zip 中有一个目录,它会失败,并出现以下异常:
Exception in thread "main" java.util.zip.ZipException: invalid entry size (expected 1374 but got 1024 bytes)
我正在使用以下代码:
public static void ZipExtractToZip(File inZip, File outZip) throws IOException
{
ZipInputStream zis = new ZipInputStream(new FileInputStream(inZip));
ZipOutputStream zos = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(outZip)));
byte[] buffer = new byte[1024];
for (ZipEntry ze = zis.getNextEntry(); ze != null; ze = zis.getNextEntry())
{
zos.putNextEntry(ze);
for (int read = zis.read(buffer); read != -1; read = zis.read(buffer)) {
zos.write(buffer, 0, read);
}
zos.closeEntry();
}
zos.close();
zis.close();
}
我尝试了不同的缓冲区大小,但这没有帮助,我需要一种方法来获取动态缓冲区大小。欢迎提供示例和链接。
编辑:我更改了代码以使其可用
最佳答案
移动
zos.closeEntry();
在最内层循环之外,否则您假设每个条目的长度不超过 1024 字节。
我猜你的目录是那个大小的第一个条目。
顺便说一句,你也可以移动
byte[] buffer = new byte[1024];
在外层循环之前,所以它只创建一次。
关于Java - Zip 输出流动态缓冲区大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8801998/
我来自 Asp.Net 世界,试图理解 Angular State 的含义。 什么是 Angular 状态?它类似于Asp.Net中的ascx组件吗?是子页面吗?它类似于工作流程状态吗? 我听到很多人
我一直在寻找 3 态拨动开关,但运气不佳。 基本上我需要一个具有以下状态的开关: |开 |不适用 |关 | slider 默认从中间开始,一旦用户向左或向右滑动,就无法回到N/A(未回答)状态。 有人
我是一名优秀的程序员,十分优秀!