public class Test5 {
public static void main(String...args){
ZipOutputStream zos = null;
ZipInputStream zis = null;
try{
File file = new File("E:\\TDDOWNLOAD");
CheckedOutputStream cos = new CheckedOutputStream(new FileOutputStream("E:\\TDDOWNLOAD.zip"), new CRC32());
zos = new ZipOutputStream(cos);
compress("",file,zos);
zos.close();
//checkSum valid only after file has been closed
long checkSum = cos.getChecksum().getValue();
System.out.println(checkSum);
CheckedInputStream cis = new CheckedInputStream(new FileInputStream("E:\\TDDOWNLOAD.zip"), new CRC32());
zis = new ZipInputStream(cis);
uncompress("E:\\",zis);
zis.close();
long checkSum2 = cis.getChecksum().getValue();
System.out.println(checkSum2);
}catch(IOException e){
e.printStackTrace();
}finally{
if(zos != null){
try {
zos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(zis != null){
try {
zis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
private static void compress(String parentPath, File file, ZipOutputStream zos) throws IOException{
if(file.isHidden() || !file.canRead()){
return ;
}
if(file.isFile()){
ZipEntry entry = new ZipEntry(parentPath+file.getName());
zos.putNextEntry(entry);
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file),8192);
int count = 0;
byte[] b = new byte[8192];
while((count=bis.read(b))!=-1){
zos.write(b,0,count);
}
zos.closeEntry();
zos.flush();
bis.close();
}else{
//压缩空目录
ZipEntry entry = new ZipEntry(parentPath+file.getName()+"/");
zos.putNextEntry(entry);
zos.closeEntry();
zos.flush();
//end
File[] subFiles = file.listFiles();
for(int i=0;i<subFiles.length;i++){
compress(parentPath+file.getName()+"/", subFiles[i],zos);
}
}
}
private static void uncompress(String parentPath, ZipInputStream zis) throws IOException {
ZipEntry entry = null;
String filePath = null;
String dir = null;
String fileName = null;
File file = null;
byte[] b = new byte[8192];
while((entry=zis.getNextEntry())!=null){
filePath = parentPath+entry.getName();
if(entry.isDirectory()){
dir = filePath.substring(0, filePath.lastIndexOf("/"));
new File(dir).mkdirs();
}else{
file = new File(filePath);
file.createNewFile();
FileOutputStream fos = new FileOutputStream(file);
int count = 0;
while((count=zis.read(b))!=-1){
fos.write(b,0,count);
}
fos.close();
}
}
}
}
我不明白的是:为什么每次压缩产生的校验和是不同的?
分享到:
相关推荐
java 压缩与解压缩工具
`ZipOutputStream`用于创建ZIP格式的压缩文件,而`ZipInputStream`则用于读取并解压缩这些文件。以下是一个简单的压缩文件的示例: ```java import java.io.*; import java.util.zip.*; public class ZipExample {...
在Java编程语言中,文件的压缩与解压缩是常见的数据处理操作,特别是在数据传输、存储优化和备份场景中。本实践项目围绕这个主题展开,包括源代码和相关的论文,为学习者提供了深入理解和应用Java压缩库的机会。以下...
使用Java ZIPInputStream、ZIPOutputStream、ZIPEntity完成对文件、文件夹的压缩与解压缩的封装,代码清晰易懂
(Java毕业设计)JAVA文件压缩与解压缩实践(Java毕业设计)JAVA文件压缩与解压缩实践(Java毕业设计)JAVA文件压缩与解压缩实践(Java毕业设计)JAVA文件压缩与解压缩实践(Java毕业设计)JAVA文件压缩与解压缩实践(Java毕业...
JAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩...
JAVA文件压缩与解压缩实践(源代码+论文) JAVA文件压缩与解压缩实践(源代码+论文) JAVA文件压缩与解压缩实践(源代码+论文) JAVA文件压缩与解压缩实践(源代码+论文) JAVA文件压缩与解压缩实践(源代码+论文) JAVA文件...
java毕业设计——java文件压缩与解压缩实践设计与开发(源代码+论文).zip java毕业设计——java文件压缩与解压缩实践设计与开发(源代码+论文).zip java毕业设计——java文件压缩与解压缩实践设计与开发(源代码+论文)....
JAVA文件压缩与解压缩实践(源代码+LW)JAVA文件压缩与解压缩实践(源代码+LW)JAVA文件压缩与解压缩实践(源代码+LW)JAVA文件压缩与解压缩实践(源代码+LW)JAVA文件压缩与解压缩实践(源代码+LW)JAVA文件压缩与解压缩实践...
JAVA文件压缩与解压缩实践(源代码+论文)JAVA文件压缩与解压缩实践(源代码+论文)JAVA文件压缩与解压缩实践(源代码+论文)JAVA文件压缩与解压缩实践(源代码+论文)JAVA文件压缩与解压缩实践(源代码+论文)JAVA文件压缩与...
在Java编程语言中,文件的压缩与解压缩是常见的任务,尤其在数据存储、传输以及备份等场景下显得尤为重要。本实践毕设论文主要探讨了如何利用Java进行文件的压缩和解压缩操作,通过源代码程序来实现这一功能。下面...
在Java编程语言中,实现RAR压缩与解压缩是一项常见的任务,尤其在处理大量数据或打包文件以便于传输时。本文将深入探讨如何使用Java来实现这个功能,主要关注`FileUtil.java`文件中的代码实现。 首先,Java本身并不...
Java实现压缩解压缩文件和文件夹(附源码) zip unzip 压缩 解压缩
JAVA文件压缩与解压缩实践(源代码+lw).rarJAVA文件压缩与解压缩实践(源代码+lw).rarJAVA文件压缩与解压缩实践(源代码+lw).rarJAVA文件压缩与解压缩实践(源代码+lw).rarJAVA文件压缩与解压缩实践(源代码+lw).rarJAVA...