JAVA实现实用的ZIP压缩与解压
来源:互联网 发布:数据抽样方法 编辑:程序博客网 时间:2024/05/16 15:57
程序实现了ZIP压缩。共分为2部分 : 压缩(compression)与解压(decompression)
大致功能包括用了多态,递归等JAVA核心技术,可以对单个文件和任意级联文件夹进行压缩和解压。 需在代码中自定义源输入路径和目标输出路径。
[java] view plaincopy
- package com.han;
- import java.io.*;
- import java.util.zip.*;
- /**
- * 程序实现了ZIP压缩。共分为2部分 :
- * 压缩(compression)与解压(decompression)
- * <p>
- * 大致功能包括用了多态,递归等JAVA核心技术,可以对单个文件和任意级联文件夹进行压缩和解压。
- * 需在代码中自定义源输入路径和目标输出路径。
- * <p>
- * 在本段代码中,实现的是压缩部分;解压部分见本包中decompression部分。
- * @author HAN
- *
- */
- public class CopyOfMyZipCompressing {
- private int k=1; //定义递归次数变量
- public CopyOfMyZipCompressing() {
- // TODO Auto-generated constructor stub
- }
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- long startTime=System.currentTimeMillis();
- CopyOfMyZipCompressing book=new CopyOfMyZipCompressing();
- try {
- book.zip(“C:\\Users\\HAN\\Desktop\\stock\\SpectreCompressed.zip”, //自定义的zip输出路径
- new File(“C:\\Users\\HAN\\Desktop\\CombinedSpectres.txt”)); //自定义的源输入路径,即要压缩的文件或文件夹
- } catch (Exception e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- long endTime=System.currentTimeMillis();
- System.out.println(“耗费时间: “+(endTime-startTime)+” ms”);
- }
- private void zip(String zipFileName, File inputFile) throws Exception{
- System.out.println(“压缩中…”);
- ZipOutputStream out=new ZipOutputStream(new FileOutputStream(zipFileName));
- BufferedOutputStream bo=new BufferedOutputStream(out);
- zip(out,inputFile, “/”+inputFile.getName(),bo);
- bo.close();
- out.close(); //输出流关闭
- System.out.println(“压缩完成”);
- }
- private void zip(ZipOutputStream out, File f, String base, BufferedOutputStream bo)
- throws Exception{ //方法重载
- if (f.isDirectory()){
- File[] fl=f.listFiles();
- for(int i=0;i<fl.length;i++){
- zip(out, fl[i],base+”/”+fl[i].getName(),bo); //递归遍历子文件夹
- }
- System.out.println(“第”+k+”次递归”);
- k++;
- }else{
- out.putNextEntry(new ZipEntry(base)); // 创建zip压缩进入点base
- System.out.println(base);
- FileInputStream in=new FileInputStream(f);
- BufferedInputStream bi=new BufferedInputStream(in);
- int b;
- while((b=bi.read())!=-1){
- bo.write(b); //将字节流写入当前zip目录
- }
- bi.close();
- in.close(); //输入流关闭
- }
- }
- }
[java] view plaincopy
- package com.han;
- import java.io.*;
- import java.util.zip.*;
- /**
- * 程序实现了ZIP压缩。共分为2部分 :
- * 压缩(compression)与解压(decompression)
- * <p>
- * 大致功能包括用了多态,递归等JAVA核心技术,可以对单个文件和任意级联文件夹进行压缩和解压。
- * 需在代码中自定义源输入路径和目标输出路径。
- * <p>
- * 在本段代码中,实现的是解压部分;压缩部分见本包中compression部分。
- * @author HAN
- *
- */
- public class CopyOfMyzipDecompressing {
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- long startTime=System.currentTimeMillis();
- try {
- ZipInputStream Zin=new ZipInputStream(new FileInputStream(
- “C:\\Users\\HAN\\Desktop\\stock\\SpectreCompressed.zip”));//输入源zip路径
- BufferedInputStream Bin=new BufferedInputStream(Zin);
- String Parent=”C:\\Users\\HAN\\Desktop”; //输出路径(文件夹目录)
- File Fout=null;
- ZipEntry entry;
- try {
- while((entry = Zin.getNextEntry())!=null && !entry.isDirectory()){
- Fout=new File(Parent,entry.getName());
- if(!Fout.exists()){
- (new File(Fout.getParent())).mkdirs();
- }
- FileOutputStream out=new FileOutputStream(Fout);
- BufferedOutputStream Bout=new BufferedOutputStream(out);
- int b;
- while((b=Bin.read())!=-1){
- Bout.write(b);
- }
- Bout.close();
- out.close();
- System.out.println(Fout+”解压成功”);
- }
- Bin.close();
- Zin.close();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- } catch (FileNotFoundException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- long endTime=System.currentTimeMillis();
- System.out.println(“耗费时间: “+(endTime-startTime)+” ms”);
- }
- }
阅读全文
0 0
- JAVA实现实用的ZIP压缩与解压
- JAVA实现实用的ZIP压缩与解压
- JAVA实现实用的ZIP压缩与解压
- JAVA实现实用的ZIP压缩与解压
- JAVA实现实用的ZIP压缩与解压
- JAVA实现实用的ZIP压缩与解压
- JAVA实现实用的ZIP压缩与解压
- JAVA实现实用的ZIP压缩与解压
- JAVA实现实用的ZIP压缩与解压
- JAVA实现实用的ZIP压缩与解压
- JAVA实现实用的ZIP压缩与解压
- JAVA实现实用的ZIP压缩与解压
- JAVA实现实用的ZIP压缩与解压
- JAVA API实现ZIP压缩与解压
- Java 实现zip格式的文件压缩与解压
- 用java代码实现文件的zip压缩与解压
- java实现zip的压缩和解压
- java zip文件的压缩与解压
- mysql 数据库 sql mode 的研究与整理
- 快速幂-竞赛算法用法-和-例题详解---Hayden's Blog.
- USB驱动之xhci
- Mysql数据类型和运算符学习
- 内存的管理艺术(基于C语言)1
- JAVA实现实用的ZIP压缩与解压
- iframe 的事件传递
- 655. Print Binary Tree
- 安装篇 01. 安装镜像 ISO 文件下载 ❀ Windows Server 2016
- LeetCode 2. Add Two Numbers -- 两个链表按序从头到尾相加,记录进位
- Java for Web学习笔记(七五):国际化i18n(3)异常显示的国际化
- 笨小猴
- (2017多校训练第一场)HDU
- 14.1、时间复杂度