JAVA实现实用的ZIP压缩与解压
来源:互联网 发布:程序员很难吗 编辑:程序博客网 时间:2024/05/17 06:43
程序实现了ZIP压缩。共分为2部分 : 压缩(compression)与解压(decompression)
大致功能包括用了多态,递归等JAVA核心技术,可以对单个文件和任意级联文件夹进行压缩和解压。 需在代码中自定义源输入路径和目标输出路径。
import java.io.*; import java.util.zip.*; /** * 程序实现了ZIP压缩。共分为2部分 : 压缩(compression)与解压(decompression) * <p> * 大致功能包括用了多态,递归等JAVA核心技术,可以对单个文件和任意级联文件夹进行压缩和解压。 * 需在代码中自定义源输入路径和目标输出路径。 * <p> * 在本段代码中,实现的是压缩部分;解压部分见本包中Decompression部分。 * * @author HAN * */ public class MyZipCompressing { private int k = 1; // 定义递归次数变量 public MyZipCompressing() { // TODO Auto-generated constructor stub } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub MyZipCompressing book = new MyZipCompressing(); try { book.zip("C:\\Users\\Gaowen\\Desktop\\ZipTestCompressing.zip", new File("C:\\Users\\Gaowen\\Documents\\Tencent Files")); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } 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(); if (fl.length == 0) { out.putNextEntry(new ZipEntry(base + "/")); // 创建zip压缩进入点base System.out.println(base + "/"); } 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(); // 输入流关闭 } } }
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文件的压缩与解压
- BZOJ 3626 [LNOI2014]LCA
- 借助Stetho在Chrome上调试Android网络、数据库、Sharedpreferences
- 算法竞赛-走迷宫
- 为什么要自建量化交易平台?
- 二、OutOfMemoryError实战
- JAVA实现实用的ZIP压缩与解压
- nagios插件之监控mqa线程数
- 题目1092:Fibonacci
- JAVA 反射机制详解
- 利用socket实现Windows与Linux平台间的网络通信
- python的继承体系mro详解
- linux对文件的访问之ACL
- Babel简单学习笔记
- spring cloud 学习笔记-Eureka