
java中实现gzip完整性校验
对于类似于“gzip -t ”命令的gzip完整性校验,可以使用以下方法实现:
利用gzipinputstream和fileoutputstream
常用的方法是使用gzipinputstream和fileoutputstream组合来解压gzip文件,该方法会自动执行完整性校验:
立即学习“Java免费学习笔记(深入)”;
甲骨文AI协同平台
专门用于甲骨文研究的革命性平台
21 查看详情
public static void decompressgzip(file input, file output) throws ioexception, zipexception { try (gzipinputstream in = new gzipinputstream(new fileinputstream(input))) { try (fileoutputstream out = new fileoutputstream(output)) { byte[] buffer = new byte[1024]; int len; while ((len = in.read(buffer)) != -1) { out.write(buffer, 0, len); } } }}
如果gzip文件不完整,则会抛出zipexception异常。
使用outputstream.nulloutputstream()
另一种方法是使用outputstream.nulloutputstream()来模拟“gzip -t”命令的行为。通过将gzip数据流输出到这个流中,并检查是否抛出异常,即可实现完整性校验:
public static boolean checkGzipIntegrity(File input) throws IOException { try (GZIPInputStream in = new GZIPInputStream(new FileInputStream(input))) { OutputStream out = OutputStream.nullOutputStream(); // Java >= 11 try (OutputStream out = new OutputStream() { @Override public void write(int b) { // 不执行任何写入操作 } }) { byte[] buffer = new byte[1024]; int len; while ((len = in.read(buffer)) != -1) { out.write(buffer, 0, len); } } return true; } catch (ZipException e) { return false; }}
以上就是Java如何实现类似gzip -t命令的Gzip文件完整性校验?的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/619561.html
微信扫一扫
支付宝扫一扫