通过Java复制Zip文件的最佳方法
经过研究:
如何创建一个Zip文件
和一些谷歌研究,我想出了这个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 belowpublic 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复制Zip文件的最佳方法 的全部内容, 来源链接: utcz.com/qa/430630.html