首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

兑现了ZIP【压缩】【解压】功能

2012-09-05 
实现了ZIP【压缩】【解压】功能程序实现了ZIP压缩。共分为2部分 : 压缩(compression)与解压(decompression) 大

实现了ZIP【压缩】【解压】功能

程序实现了ZIP压缩。共分为2部分 : 压缩(compression)与解压(decompression)

大致功能包括用了多态,递归等JAVA核心技术,可以对单个文件和任意级联文件夹进行压缩和解压。

需在代码中自定义源输入路径和目标输出路径。

package com.uaes.util;import java.io.*;import java.util.zip.*;/** * @description 实现了ZIP【压缩】【解压】功能:大致功能包括用了多态,递归等JAVA核心技术,可以对单个文件和任意级联文件夹进行压缩和解压。 * @author King_wangyao * @date 2011-11-28 * @version 1.0.0 *  */public class ZIPUtil {private static int k = 1; // 定义递归次数变量/** * 指定ZIP压缩(compression) *  * @param zipFileName 输入完整的压缩包路径名称 * @param inputFile 输入将要压缩的目录 */private static void compression(String zipFileName, File inputFile) throws Exception {long startTime = System.currentTimeMillis();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("压缩完成");long endTime = System.currentTimeMillis();System.out.println("压缩耗费时间: " + (endTime - startTime) + " ms");}private static 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压缩进入点baseSystem.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(); // 输入流关闭}}/** * 指定ZIP解压(decompression) *  * @param target 输入源zip路径 * @param parent 输出解压目录) */public static void decompression(String target, String parent) {long startTime = System.currentTimeMillis();System.out.println("压缩中...");try {ZipInputStream Zin = new ZipInputStream(new FileInputStream(target));// 输入源zip路径BufferedInputStream Bin = new BufferedInputStream(Zin);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) {e.printStackTrace();}} catch (FileNotFoundException e) {e.printStackTrace();}long endTime = System.currentTimeMillis();System.out.println("解压耗费时间: " + (endTime - startTime) + " ms");}/** * 测试... * @param args */public static void main(String[] args) {// 自定义的zip输出路径String target = "C:\\TEMP\\Compression.zip";// 自定义的源输入路径,即要压缩的文件或文件夹String path = "C:\\TEMP\\student.png";// 自定义的解压目录String decompressionPath = "C:\\TEMP\\decompression";try {// 压缩测试compression(target, new File(path));// 解压测试decompression(target, decompressionPath);} catch (Exception e) {e.printStackTrace();}}}

?

程序控制台输入结果,如下图:


兑现了ZIP【压缩】【解压】功能
?

压缩、解压结果,如下图:


兑现了ZIP【压缩】【解压】功能

热点排行