gpt4 book ai didi

java - 通过 Java 复制和验证 Zip 文件

转载 作者:搜寻专家 更新时间:2023-11-01 01:07:17 26 4
gpt4 key购买 nike

经过一些研究:

How to create a Zip File

和一些谷歌研究我想出了这个 java 函数:

 static void copyFile(File zipFile, File newFile) throws IOException {
ZipFile zipSrc = new ZipFile(zipFile);
ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(newFile));

Enumeration srcEntries = zipSrc.entries();
while (srcEntries.hasMoreElements()) {
ZipEntry entry = (ZipEntry) srcEntries.nextElement();
ZipEntry newEntry = new ZipEntry(entry.getName());
zos.putNextEntry(newEntry);

BufferedInputStream bis = new BufferedInputStream(zipSrc
.getInputStream(entry));

while (bis.available() > 0) {
zos.write(bis.read());
}
zos.closeEntry();

bis.close();
}
zos.finish();
zos.close();
zipSrc.close();
}

此代码可以正常工作...但它一点也不干净...有人有好主意或示例吗?

编辑:

如果 zip 存档具有正确的结构,我希望能够添加某种类型的验证...所以像普通文件一样复制它而不考虑其内容对我来说不起作用...或者您更愿意事后检查它...我不确定这个

最佳答案

您只想复制完整的 zip 文件?不需要打开和读取 zip 文件...只需像复制其他文件一样复制它。

public final static int BUF_SIZE = 1024; //can be much bigger, see comment below


public static void copyFile(File in, File out) throws Exception {
FileInputStream fis = new FileInputStream(in);
FileOutputStream fos = new FileOutputStream(out);
try {
byte[] buf = new byte[BUF_SIZE];
int i = 0;
while ((i = fis.read(buf)) != -1) {
fos.write(buf, 0, i);
}
}
catch (Exception e) {
throw e;
}
finally {
if (fis != null) fis.close();
if (fos != null) fos.close();
}
}

关于java - 通过 Java 复制和验证 Zip 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1946298/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com