将使用java.util.zip创建的zip大小与使用java.util.zip创建的原始文件夹大小进行比较

将使用java.util.zip创建的zip大小与使用java.util.zip创建的原始文件夹大小进行比较,java,zip,zipfile,Java,Zip,Zipfile,我刚刚使用java.util.Zip创建了一个Zip文件。现在我想检查创建的ZIP是否正确,ZIP文件的未压缩大小是否等于我压缩的实际文件夹 我知道有一个方法ZipFile.isValid(),如果ZIP中的所有头都正确,它将返回true。但这并不能解决我的问题 谢谢:)解压*.zip文件,迭代每个ZipEntry元素,对每个ZipEntry.getSize()求和。将其与压缩的文件大小之和进行比较。或者(如果您出于某种原因不信任ZipEntry头),解压缩每个ZipEntry,计算字节数,但丢

我刚刚使用java.util.Zip创建了一个Zip文件。现在我想检查创建的ZIP是否正确,ZIP文件的未压缩大小是否等于我压缩的实际文件夹

我知道有一个方法ZipFile.isValid(),如果ZIP中的所有头都正确,它将返回true。但这并不能解决我的问题


谢谢:)

解压*.zip文件,迭代每个ZipEntry元素,对每个ZipEntry.getSize()求和。将其与压缩的文件大小之和进行比较。或者(如果您出于某种原因不信任ZipEntry头),解压缩每个ZipEntry,计算字节数,但丢弃它们。您可以执行以下任一操作,例如,快速检查邮政编码,或者甚至在单元测试中执行

您可以在ZipEntry上迭代:

zipInStream = new ZipInputStream(new FileInputStream(zipFile));
ZipEntry zipEntry;
while ((zipEntry = zipInStream.getNextJarEntry()) != null) {
    String entryName = zipEntry.getName();
    ....
}

检查ZIP文件是否正确创建

if (myZipFile.isValid())
{
    // The file has been created successfully
}
知道目录和文件的长度

File dir = new File("path/to/the/directory/");
int size = dir.length();

File zip = new File("path/to/zipfile.zip");
int zipSize = zip.length();

现在您可以比较它们。

为什么要执行此检查?你是在调试,还是在生产中使用这段代码?我想到了这一点。但我创建的档案确实很大。不想再次解压和迭代!是啊,看起来很傻,不是吗。但这是唯一的办法。这可能解释了为什么你没有得到这个问题的很多答案。:-)很不幸,我猜:)这将压缩的zip文件的大小与zip文件中一个目录的大小进行比较!我认为那是行不通的。