本文共 1409 字,大约阅读时间需要 4 分钟。
此示例演示如何CheckedOutputStream用于创建zip文件的校验和。校验和可用于检测在向远程计算机的传输过程中数据是否已损坏。package org.nhooo.example.zip;
import java.io.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import java.util.zip.CheckedOutputStream;
import java.util.zip.Adler32;
public class ZipWithChecksum {
public static void main(String[] args) throws Exception {
String target = "data-1.zip";
try (FileOutputStream fos = new FileOutputStream(target);
// 输出流还维护数据的校验和
//被写。然后可以使用校验和来验证
// 输出数据的完整性。
CheckedOutputStream checksum =
new CheckedOutputStream(fos, new Adler32());
ZipOutputStream zos =
new ZipOutputStream(new BufferedOutputStream(checksum))) {
int size;
byte[] buffer = new byte[1024];
// 获取工作文件夹中的所有文本文件。
File dir = new File(".");
String[] files = dir.list(new FilenameFilter() {
public boolean accept(File dir, String name) {
return name.endsWith(".txt");
}
});
for (String file : files) {
System.out.println("Compressing: " + file);
try (FileInputStream fis = new FileInputStream(file);
BufferedInputStream bis =
new BufferedInputStream(fis, buffer.length)) {
// 在ZipOutputStream中放置一个新的ZipEntry
ZipEntry zipEntry = new ZipEntry(file);
zos.putNextEntry(zipEntry);
// 将数据读取到源文件的末尾并写入
// 到zip输出流。
while ((size = bis.read(buffer, 0, buffer.length)) > 0) {
zos.write(buffer, 0, size);
}
zos.closeEntry();
}
}
// 打印校验和值
long value = checksum.getChecksum().getValue();
System.out.println("Checksum : " + value);
}
}
}
转载地址:https://blog.csdn.net/weixin_33960567/article/details/116026553 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!