Java将byte流转换成zip文件_java zip文件的压缩与解压

[ 我们经常会使用WinZIP等压缩软件将文件进行压缩以方便传输。在java里面也提供了将文件进行压缩以减少传输时的数据量的类,可以很方便的将文件压缩成ZIP、JAR、GZIP等形

java里面有个包叫java.util.zip提供zip文件压缩,但是编码的时候非常不方便。编码量太多了,通过搜索,发现apache有个包提供一些简单的方法来实现zip文件的压缩与解压缩

http://ant.apache.org/。下载地址:

org.apache.tools.zip 下载下来解压缩后,该包中的ant.jar里面提供了zip文件压缩与解压缩的功能代码。在项目中引用该类库。   要压缩成zip文件,涉及到的问题如下: 1.将要压缩的文件添加到zip文件包中。 2.组织好要压缩的文件目录与压缩后的zip文件目录一致。 3.文件名以及文件夹名中文字符编码。 4.解压缩zip文件,并将解压缩后的文件及文件夹的组织形式要与压缩前的一致。   在设计该类的时候,我编写了一下几个方法: 第一个zip方法,将来填入要压缩的文件或文件夹路径,然后压缩成zip文件并保存到指定位置。代码如下:

1

/**

2

* 压缩文件或者文件夹 压缩采用gb2312编码,其它编码方式可能造成文件名与文件夹名使用中文的情况下压缩后为乱码。。。

3

*

4

*

@param

source

5

* 要压缩的文件或者文件夹

6

* 建议使用"c:/abc"或者"c:/abc/aaa.txt"这种形式来给定压缩路径

7

* 使用"c:\\abc" 或者"c:\\abc\\aaa.txt"这种形式来给定路径的话,可能导致出现压缩和解压缩路径意外故障。。。

8

*

@param

zipFileName

9

* 压缩后的zip文件名称 压缩后的目录组织与windows的zip压缩的目录组织相同。

10

* 会根据压缩的目录的名称,在压缩文件夹中创建一个改名的根目录, 其它压缩的文件和文件夹都在该目录下依照原来的文件目录组织形式

11

*

@throws

IOException

12

* 压缩文件的过程中可能会抛出IO异常,请自行处理该异常。

13

*/

14

public

static

void

ZIP(String source, String zipFileName)

15

throws

IOException {

16

ZipOutputStream zos

=

new

ZipOutputStream(

new

File(zipFileName));

17

18

//

设置压缩的时候文件名编码为gb2312

19

zos.setEncoding(

"

gb2312

"

);

20

//

System.out.println(zos.getEncoding());

21

22

File f

=

new

File(source);

23

24

if

(f.isDirectory()) {

25

//

如果直接压缩文件夹

26

ZIPDIR(source, zos, f.getName()

+

"

/

"

);

//

此处使用/来表示目录,如果使用\\来表示目录的话,会导致压缩后的文件目录组织形式在解压缩的时候不能正确识别。

27

}

else

{

28

//

如果直接压缩文件

29

ZIPDIR(f.getPath(), zos,

new

File(f.get

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值