`
lg_asus
  • 浏览: 191785 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

java压缩与解压缩

 
阅读更多
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 压缩与解压缩 实例

    `ZipOutputStream`用于创建ZIP格式的压缩文件,而`ZipInputStream`则用于读取并解压缩这些文件。以下是一个简单的压缩文件的示例: ```java import java.io.*; import java.util.zip.*; public class ZipExample {...

    JAVA文件压缩与解压缩实践(源代码+论文)

    在Java编程语言中,文件的压缩与解压缩是常见的数据处理操作,特别是在数据传输、存储优化和备份场景中。本实践项目围绕这个主题展开,包括源代码和相关的论文,为学习者提供了深入理解和应用Java压缩库的机会。以下...

    java压缩与解压缩工具类

    使用Java ZIPInputStream、ZIPOutputStream、ZIPEntity完成对文件、文件夹的压缩与解压缩的封装,代码清晰易懂

    (Java毕业设计)JAVA文件压缩与解压缩实践(源代码+).rar

    (Java毕业设计)JAVA文件压缩与解压缩实践(Java毕业设计)JAVA文件压缩与解压缩实践(Java毕业设计)JAVA文件压缩与解压缩实践(Java毕业设计)JAVA文件压缩与解压缩实践(Java毕业设计)JAVA文件压缩与解压缩实践(Java毕业...

    JAVA文件压缩与解压缩实践(源代码).zip

    JAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩...

    JAVA文件压缩与解压缩实践(源代码+论文).rar

    JAVA文件压缩与解压缩实践(源代码+论文) JAVA文件压缩与解压缩实践(源代码+论文) JAVA文件压缩与解压缩实践(源代码+论文) JAVA文件压缩与解压缩实践(源代码+论文) JAVA文件压缩与解压缩实践(源代码+论文) JAVA文件...

    java毕业设计——java文件压缩与解压缩实践设计与开发(源代码+论文).zip

    java毕业设计——java文件压缩与解压缩实践设计与开发(源代码+论文).zip java毕业设计——java文件压缩与解压缩实践设计与开发(源代码+论文).zip java毕业设计——java文件压缩与解压缩实践设计与开发(源代码+论文)....

    JAVA文件压缩与解压缩实践(源代码+LW).zip

    JAVA文件压缩与解压缩实践(源代码+LW)JAVA文件压缩与解压缩实践(源代码+LW)JAVA文件压缩与解压缩实践(源代码+LW)JAVA文件压缩与解压缩实践(源代码+LW)JAVA文件压缩与解压缩实践(源代码+LW)JAVA文件压缩与解压缩实践...

    JAVA文件压缩与解压缩实践(源代码+论文).zip

    JAVA文件压缩与解压缩实践(源代码+论文)JAVA文件压缩与解压缩实践(源代码+论文)JAVA文件压缩与解压缩实践(源代码+论文)JAVA文件压缩与解压缩实践(源代码+论文)JAVA文件压缩与解压缩实践(源代码+论文)JAVA文件压缩与...

    JAVA文件压缩与解压缩实践毕设论文源代码程序

    在Java编程语言中,文件的压缩与解压缩是常见的任务,尤其在数据存储、传输以及备份等场景下显得尤为重要。本实践毕设论文主要探讨了如何利用Java进行文件的压缩和解压缩操作,通过源代码程序来实现这一功能。下面...

    java实现rar压缩与解压缩

    在Java编程语言中,实现RAR压缩与解压缩是一项常见的任务,尤其在处理大量数据或打包文件以便于传输时。本文将深入探讨如何使用Java来实现这个功能,主要关注`FileUtil.java`文件中的代码实现。 首先,Java本身并不...

    Java实现压缩解压缩文件和文件夹(附源码)

    Java实现压缩解压缩文件和文件夹(附源码) zip unzip 压缩 解压缩

    JAVA文件压缩与解压缩实践(源代码+lw).rar

    JAVA文件压缩与解压缩实践(源代码+lw).rarJAVA文件压缩与解压缩实践(源代码+lw).rarJAVA文件压缩与解压缩实践(源代码+lw).rarJAVA文件压缩与解压缩实践(源代码+lw).rarJAVA文件压缩与解压缩实践(源代码+lw).rarJAVA...

Global site tag (gtag.js) - Google Analytics