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 压缩与解压缩工具
java 压缩与解压 实例是最好的学习方法
使用Java ZIPInputStream、ZIPOutputStream、ZIPEntity完成对文件、文件夹的压缩与解压缩的封装,代码清晰易懂
JAVA文件压缩与解压缩实践(源代码+论文)
(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文件压缩与解压缩实践(源代码+论文)JAVA文件压缩与解压缩实践(源代码+论文)JAVA文件压缩与解压缩实践(源代码+论文)JAVA文件压缩与解压缩实践(源代码+论文)JAVA文件压缩与解压缩实践(源代码+论文)JAVA文件压缩与...
JAVA文件压缩与解压缩实践报告 主函数 gzip压缩模块代码 压缩模块要完成的就是将文件读入以后进行压缩,再将压缩后的数据写入一个新的文件,其部分代码如下: public class gzip { public static void main(String...
java实现压缩与解压缩
JAVA文件压缩与解压缩实践,java解压缩zip文件,Java源码
java 实现压缩与解压缩ZIP .docjava 实现压缩与解压缩ZIP .docjava 实现压缩与解压缩ZIP .docjava 实现压缩与解压缩ZIP .doc
Java实现压缩解压缩文件和文件夹(附源码) zip unzip 压缩 解压缩
JAVA文件压缩与解压缩实践(源代码+lw).rarJAVA文件压缩与解压缩实践(源代码+lw).rarJAVA文件压缩与解压缩实践(源代码+lw).rarJAVA文件压缩与解压缩实践(源代码+lw).rarJAVA文件压缩与解压缩实践(源代码+lw).rarJAVA...
javaweb毕业设计-JAVA文件压缩与解压缩实践(源代码+lw)(可做课程设计).rarjavaweb毕业设计-JAVA文件压缩与解压缩实践(源代码+lw)(可做课程设计).rarjavaweb毕业设计-JAVA文件压缩与解压缩实践(源代码+lw)(可做课程...
使用Java核心API实现单文件/多文件/整个目录的压缩/解压缩功能,由于自带API(1.6)不支持指定编码方式,因此中文会出现乱码(1.7貌似已经支持指定编码方式),所以还写了一个基于ant包的压缩/解压缩代码。