都是JDK中原带的工具类和方法,压缩是Deflater类,解压是Inflater类!
该文章仅仅展示这两个类的实际使用,不用拍砖!
我们找一个压缩后能明显看出压缩效果的文件,比如DOC类文件,然后使用360压缩将其压缩,看压缩后大小
然后使用我们的程序进行压缩处理,看处理后的文件大小
最后进行解压,然后运行文件看压缩是否对文件产生了损坏
压缩:
package com.xidian; import java.io.ByteArrayOutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.util.zip.Deflater; /** * 压缩类 * * @说明 缓冲区越大,速度越快 * @author cuisuqiang * @version 1.0 * @since */ public class ZipDirectory { public static void main(String[] args) throws Exception { en(); } public static void en() throws Exception { // 输入流 InputStream is = new FileInputStream("C:\\详细设计.doc"); // 字节输出流 ByteArrayOutputStream baos = new ByteArrayOutputStream(); // 缓冲区 缓冲区越大,速度越快 byte[] bu = new byte[1024 * 100]; int count = 0; // 将流写到字节输出流中 while ((count = is.read(bu)) > 0) { baos.write(bu, 0, count); } // 将字节输出流转为字节数组 byte[] text = baos.toByteArray(); // 如果要使用同一个流对象,一定要重设清空原有数据 baos.reset(); // 压缩器 Deflater compresser = new Deflater(); // 重置 deflater 以处理新的输入数据集 compresser.reset(); // 为压缩设置输入数据 compresser.setInput(text); // 调用时,指示压缩应当以输入缓冲区的当前内容结尾 compresser.finish(); try { byte[] buf = new byte[1024 * 100]; // 如果已到达压缩数据输出流的结尾,则返回 true while (!compresser.finished()) { int i = compresser.deflate(buf); baos.write(buf, 0, i); } } catch (Exception e) { e.printStackTrace(); } // 关闭解压缩器并放弃所有未处理的输入 compresser.end(); // 输出流 这里大家应该知道,输出任意名称,带不带后缀都是可以的,因为在Java中只有文件和文件夹之分 FileOutputStream fos = new FileOutputStream("C:\\详细设计"); // 将字节输出流写入到输出流中 baos.writeTo(fos); fos.close(); baos.close(); is.close(); System.out.println("压缩完毕"); } }
解压:
package com.xidian; import java.io.ByteArrayOutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.util.zip.Inflater; /** * 解压缩类 * * @说明 缓冲区越大,速度越快 * @author cuisuqiang * @version 1.0 * @since */ public class Decompresser { public static void main(String[] args) throws Exception { de(); } public static void de() throws Exception { // 输入流 InputStream is = new FileInputStream("C:\\详细设计"); // 字节输出流 ByteArrayOutputStream baos = new ByteArrayOutputStream(); // 缓冲区 缓冲区越大,速度越快 byte[] bu = new byte[1024 * 100]; int count = 0; // 将流写到字节输出流中 while ((count = is.read(bu)) > 0) { baos.write(bu, 0, count); } // 将字节输出流转为字节数组 byte[] text = baos.toByteArray(); // 如果要使用同一个流对象,一定要重设清空原有数据 baos.reset(); // 解压器 Inflater decompresser = new Inflater(); // 重置 inflater 以处理新的输入数据集 decompresser.reset(); // 为解压缩设置输入数据 decompresser.setInput(text); // 用于接受压缩后的数据 try { // 缓冲 byte[] buf = new byte[1024 * 100]; // 如果已到达压缩数据流的结尾,则返回 true while (!decompresser.finished()) { int i = decompresser.inflate(buf); baos.write(buf, 0, i); } } catch (Exception e) { e.printStackTrace(); } // 关闭解压缩器并放弃所有未处理的输入 decompresser.end(); // 输出流 FileOutputStream fos = new FileOutputStream("C:\\详细设计.doc"); // 将字节输出流写入到输出流中 baos.writeTo(fos); fos.close(); baos.close(); is.close(); System.out.println("解压完毕"); } }
请您到ITEYE看我的原创:http://cuisuqiang.iteye.com
或支持我的个人博客,地址:http://www.javacui.com
相关推荐
Java自动解压缩文件是编程领域中的一个重要话题,尤其是在服务器端应用中,经常需要处理上传的压缩文件并进行解压操作。Java提供了丰富的API来支持这一功能,主要涉及到`java.util.zip`包中的类,如`ZipInputStream`...
在Java编程语言中,文件的压缩与解压缩是常见的数据处理操作,特别是在数据传输、存储优化和备份场景中。本实践项目围绕这个主题展开,包括源代码和相关的论文,为学习者提供了深入理解和应用Java压缩库的机会。以下...
虽然Ant不直接用于解压缩文件,但可以与Java代码结合使用,例如通过Ant任务来调用`CompressFileUtils`进行解压缩操作。Ant提供了一系列的任务,如`unzip`,可以直接在构建脚本中用于解压缩文件。 至于标签“文件解...
在Java编程语言中,解压缩ZIP文件是一项常见的任务,特别是在处理数据传输、文件打包和部署等场景下。本文将深入探讨如何使用Java API来解压缩ZIP文件,包括基本概念、核心类库以及具体实现步骤。 ZIP文件是一种...
3. **解压缩文件** 解压ZIP文件则需要一个`ZipInputStream`实例,它包装在一个`FileInputStream`中,指向ZIP文件。通过调用`getNextEntry`方法,你可以逐个访问ZIP文件中的每个条目,然后创建相应的文件或目录,将...
(Java毕业设计)JAVA文件压缩与解压缩实践(Java毕业设计)JAVA文件压缩与解压缩实践(Java毕业设计)JAVA文件压缩与解压缩实践(Java毕业设计)JAVA文件压缩与解压缩实践(Java毕业设计)JAVA文件压缩与解压缩实践(Java毕业...
在这个场景中,我们关注的是如何使用Java来实现文件压缩包的上传以及在服务器上的解压缩。Java作为一种强大的编程语言,提供了丰富的库来支持这样的操作,特别是在涉及到SFTP(Secure File Transfer Protocol)时,...
例如,`ZipInputStream`和`ZipEntry`类可以用来遍历ZIP文件中的所有条目,并逐个解压缩到目标目录。 ```java FileInputStream fis = new FileInputStream("archive.zip"); ZipInputStream zis = new ZipInputStream...
java解压缩文件支持中文,经过测试,可执行,项目中正在应用
java解压 JieyaZipDemo1.java
然而,当压缩文件包含中文字符时,解压缩过程中可能会遇到乱码问题。这是因为编码格式不匹配或者处理方式不当导致的。本篇文章将深入探讨如何在Android平台上解决Java ZIP库在解压缩中文文件时出现的乱码问题。 ...
3. **解压缩文件**: `ZipInputStream`可以用来读取和解压缩ZIP文件。创建`ZipInputStream`,然后循环读取每个`ZipEntry`,创建对应的文件或目录,并将数据写入。 4. **RAR文件处理**: 对于RAR格式,Java标准库没有...
Java实现压缩解压缩文件和文件夹(附源码) zip unzip 压缩 解压缩
JAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩...
java毕业设计——java文件压缩与解压缩实践设计与开发(源代码+论文).zip java毕业设计——java文件压缩与解压缩实践设计与开发(源代码+论文).zip java毕业设计——java文件压缩与解压缩实践设计与开发(源代码+论文)....
JAVA文件压缩与解压缩实践(源代码+论文) JAVA文件压缩与解压缩实践(源代码+论文) JAVA文件压缩与解压缩实践(源代码+论文) JAVA文件压缩与解压缩实践(源代码+论文) JAVA文件压缩与解压缩实践(源代码+论文) JAVA文件...