Java GZIPOutputStream流压缩文件的操作

2025-05-29 0 52

我就废话不多说了,大家还是直接看代码吧~

不多说,直接上代码

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19
public static void main(String[] args) throws Exception{

//压缩文件

File src = new File("e:/xx/aa.txt");

File zipFile = new File("e:/xx/a.zip");

FileOutputStream fos = new FileOutputStream(zipFile);

ZipOutputStream zos = new ZipOutputStream(fos);

BufferedInputStream bis = new BufferedInputStream(new FileInputStream(src));

ZipEntry entry = new ZipEntry( src.getName());

zos.putNextEntry(entry);

int count;

byte[] buf = new byte[1024];

while ((count = bis.read(buf)) != -1) {

zos.write(buf, 0, count);

}

bis.close();

//fos.close();

zos.close();//

}

压缩的步骤是:

src将要压缩的文件,zipFile 压缩后的文件,压缩流套接zipFile,然后将src文件写入zipFile,其中ZipEntry中放入的源文件的当前名称,putNextEntry是将源文件的当前名称定位到条目数据的开始处。

补充:Java ZIP压缩输入输出流

ZIP是一种较为常见的压缩形式,在Java中要想实现ZIP的压缩需要导入java.util.zip包,可以使用此包中的ZipFile、ZipOutputStream、ZipInputStream、ZipEntry几个类完成。

ZipOutputStream类的常用方法

Java GZIPOutputStream流压缩文件的操作

ZipInputStream类的常用方法

Java GZIPOutputStream流压缩文件的操作

在JAVA IO中,不仅可以实现ZIP压缩格式的输入、输出,也可以实现JAR及GZIP文件格式的压缩:

1、JAR压缩的支持类保存在java.util.jar包中,常用的类有 JarOutputStream(JAR压缩输出流)、JarInputStream(JAR压缩输入流)、JARFile(JAR文件)、JAREntry(JAR实体)

2、GZIP是用于UNIX系统的文件压缩,在Linux中经常会使用到*.gz的文件,就是GZIP格式,GZIP压缩的支持类保存在java.util.zip包中,常用的类有 GZIPOutputStream(GZIP压缩输出流)、GZIPInputStream(GZIP压缩输入流)

注意:

1、压缩文件中的每一个压缩实体都使用ZipEntry保存,一个压缩文件中可能包含一个或多个ZipEntry对象。

2、在JAVA中可以进行zip、jar、gz三种格式的压缩支持,操作流程基本上是一致的。

3、ZipOutputStream可以进行压缩的输出,但是输出的位置不一定是文件。

4、ZipFile表示每一个压缩文件,可以得到每一个压缩实体的输入流。

压缩文件

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44
import java.io.*;

import java.util.zip.*;

public class MyZip { // 创建类

private void zip(String zipFileName, File inputFile) throws Exception {

ZipOutputStream out = new ZipOutputStream(new FileOutputStream(

zipFileName)); // 创建ZipOutputStream类对象

zip(out, inputFile, ""); // 调用方法

System.out.println("压缩中…"); // 输出信息

out.close(); // 将流关闭

}

private void zip(ZipOutputStream out, File f, String base)

throws Exception { // 方法重载

if (f.isDirectory()) { // 测试此抽象路径名表示的文件是否是一个目录

File[] fl = f.listFiles(); // 获取路径数组

out.putNextEntry(new ZipEntry(base + "/")); // 写入此目录的entry

base = base.length() == 0 ? "" : base + "/"; // 判断参数是否为空

for (int i = 0; i < fl.length; i++) { // 循环遍历数组中文件

zip(out, fl[i], base + fl[i]);

}

} else {

out.putNextEntry(new ZipEntry(base)); // 创建新的进入点

// 创建FileInputStream对象

FileInputStream in = new FileInputStream(f);

int b; // 定义int型变量

System.out.println(base);

while ((b = in.read()) != -1) { // 如果没有到达流的尾部

out.write(b); // 将字节写入当前ZIP条目

}

in.close(); // 关闭流

}

}

public static void main(String[] temp) { // 主方法

MyZip book = new MyZip(); // 创建本例对象

try {

// 调用方法,参数为压缩后文件与要压缩文件

book.zip("hello.zip", new File("src"));

System.out.println("压缩完成"); // 输出信息

} catch (Exception ex) {

ex.printStackTrace();

}

}

}

解压文件

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28
import java.io.*;

import java.util.zip.*;

public class Decompressing { // 创建文件

public static void main(String[] temp) {

ZipInputStream zin; // 创建ZipInputStream对象

try { // try语句捕获可能发生的异常

zin = new ZipInputStream(new FileInputStream("hello.zip"));

// 实例化对象,指明要进行解压的文件

ZipEntry entry = zin.getNextEntry(); // 获取下一个ZipEntry

while (((entry = zin.getNextEntry()) != null)

&& !entry.isDirectory()) {

// 如果entry不为空,并不在同一目录下

File file = new File("d:\\\\" + entry.getName()); // 获取文件目录

System.out.println(file);

if (!file.exists()) { // 如果该文件不存在

file.mkdirs();// 创建文件所在文件夹

file.createNewFile(); // 创建文件

}

zin.closeEntry(); // 关闭当前entry

System.out.println(entry.getName() + "解压成功");

}

zin.close(); // 关闭流

} catch (Exception e) {

e.printStackTrace();

}

}

}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持快网idc。如有错误或未考虑完全的地方,望不吝赐教。

原文链接:https://blog.csdn.net/qq_35306443/article/details/84099784

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 Java GZIPOutputStream流压缩文件的操作 https://www.kuaiidc.com/109131.html

相关文章

发表评论
暂无评论