通过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 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复制Zip文件的最佳方法 的全部内容, 来源链接: utcz.com/qa/430630.html

回到顶部