压缩java程序_Java API 压缩与解压缩之一

首先我们实现最简单的解压缩zip文件,该zip文件中不包含文件夹,也不含中文名。

/**

*

 
 

* 参考:

* http://www.ibm.com/developerworks/cn/java/l-compress/index.html

*

*/

import java.io.BufferedInputStream;

import java.io.BufferedOutputStream;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.util.zip.ZipEntry;

import java.util.zip.ZipInputStream;

public class UnZip {

/** 定义一个2K的缓冲区 */

static final int BUFFER = 2048;

public static void main(String[] args) {

String fileName = "c:/testlog.zip";

// String unZipDir = "c:/abcd/abcd/abcd/abcd/abcd/";

String unZipDir = "c:/1/2/";

unZip(fileName, unZipDir);

// System.out.println(makeDir(unZipDir));

}

/**

* @param fileName

* String 待解压缩的文件名

* @param unZipDir

* String 存放解压缩后生成的文件的文件夹

*/

public static void unZip(String fileName, String unZipDir) {

try {

// 先判断目标文件夹是否存在,如果不存在则新建,如果父目录不存在也新建

File f = new File(unZipDir);

if (!f.exists()) {

f.mkdirs();

}

BufferedOutputStream dest = null;

// 将用文件输入流读入ZIP文件

FileInputStream fis = new FileInputStream(fileName);

// 类ZipInputStream读取ZIP文件

ZipInputStream zis = new ZipInputStream(

new BufferedInputStream(fis));

ZipEntry entry;

String newFileName = "";

// ZIP输入流打开后,你可以使用getNextEntry方法来读取ZIP文件中的条目数,

// 该方法返回一个ZipEntry对象。如果到达文件的尾部,getNextEntry返回null

while ((entry = zis.getNextEntry()) != null) {

System.out.println("Extracting: " + entry);

int count;

byte data[] = new byte[BUFFER];

// write the files to the disk

newFileName = unZipDir + "/" + entry.getName();

System.out.println("newFileName: " + newFileName);

FileOutputStream fos = new FileOutputStream(newFileName);

dest = new BufferedOutputStream(fos, BUFFER);

while ((count = zis.read(data, 0, BUFFER)) != -1) {

dest.write(data, 0, count);

}

dest.flush();

dest.close();

}

zis.close();

} catch (Exception e) {

e.printStackTrace();

}

}

public static boolean makeDir(String unZipDir) {

boolean b = false;

try {

File f = new File(unZipDir);

if (!f.exists()) {

b = f.mkdirs();

}

} catch (Exception e) {

e.printStackTrace();

return b;

}

return b;

}

}

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2008-09-25 10:50

浏览 2553

评论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值