如何检查生成的zip文件是否损坏?

我们有一段代码可以在我们的系统上生成一个zip文件。一切正常,但是有时该Zip文件在由FilZip或WinZip打开时被视为已损坏。

所以这是我的问题:我们如何以编程方式检查生成的zip文件是否损坏?

这是我们用于生成zip文件的代码:

try {

ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(tmpFile));

byte[] buffer = new byte[16384];

int contador = -1;

for (DigitalFile digitalFile : document.getDigitalFiles().getContent()) {

ZipEntry entry = new ZipEntry(digitalFile.getName());

FileInputStream fis = new FileInputStream(digitalFile.getFile());

try {

zos.putNextEntry(entry);

while ((counter = fis.read(buffer)) != -1) {

zos.write(buffer, 0, counter);

}

fis.close();

zos.closeEntry();

} catch (IOException ex) {

throw new OurException("It was not possible to read this file " + arquivo.getId());

}

}

try {

zos.close();

} catch (IOException ex) {

throw new OurException("We couldn't close this stream", ex);

}

我们在这里做错了什么吗?

编辑:实际上,上面的代码是绝对可以的。我的问题是我正在为用户重定向WRONG流。因此,与其打开一个zip文件,不如打开一个完全不同的文件。Mea culpa

:(

但是主要问题仍然存在:

回答:

您可以使用ZipFile该类来检查文件:

 static boolean isValid(final File file) {

ZipFile zipfile = null;

try {

zipfile = new ZipFile(file);

return true;

} catch (IOException e) {

return false;

} finally {

try {

if (zipfile != null) {

zipfile.close();

zipfile = null;

}

} catch (IOException e) {

}

}

}

以上是 如何检查生成的zip文件是否损坏? 的全部内容, 来源链接: utcz.com/qa/407056.html

回到顶部