如何解决以严格的方式验证zip存档
有一个半破碎的zip归档文件,可以从中提取出来,但给出一个半破碎的文件。
import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
import org.apache.commons.compress.archivers.zip.ZipFile;
import org.apache.commons.io.IoUtils;
...
public static boolean isValidZipFile(final File file) {
if (file.length() == 0) return false;
try (ZipFile zipFile = new ZipFile(file)) {
final Enumeration<ZipArchiveEntry> entries = zipFile.getEntries();
while (entries.hasMoreElements()) {
ZipArchiveEntry entry = entries.nextElement();
if (entry.getName().endsWith(".txt")) {
final InputStream is = zipFile.getInputStream(entry);
byte[] bytes = IoUtils.toByteArray(is);
return true;
}
}
} catch (IOException e) {
return false;
}
return false;
}
依赖项:
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.7</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId>
<version>1.20</version>
</dependency>
PS 。可以使用除apache-commons-compress之外的其他库重写代码。最终目标是验证可靠性。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。