一、压缩
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.ZipFile; import java.util.zip.ZipOutputStream; import org.apache.log4j.Logger; public class Compress { private final static Logger logger = Logger.getLogger(Compress.class); private int k = 1; // 定义递归次数变量 /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Compress book = new Compress(); try { book.Compress1("res/date.zip", new File("res/news")); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * * @param zipName zip文件名 * @param inputFile 输入文件可以是文件夹 */ private void Compress1(String zipName , File inputFile) throws Exception{ ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipName)) ; BufferedOutputStream bo = new BufferedOutputStream(out); Compress2( out , bo , inputFile , ""); out.close(); bo.close(); } /** * * @param out zip输出流 * @param bo zip输出流装饰类 * @param file 输入文件或文件夹 * @param father 上一级文件夹名 */ private void Compress2(ZipOutputStream out , BufferedOutputStream bo , File file , String father) throws Exception{ if(file.isDirectory()){ out.putNextEntry(new ZipEntry(father +file.getName()+"/")); File[] files = file.listFiles(); for(File f : files){ Compress2(out , bo , f , father+file.getName()+"/"); } } else if(file.isFile()){ out.putNextEntry(new ZipEntry(father+file.getName())); FileInputStream in = new FileInputStream(file); byte[] buffer = new byte[1024]; int length ; while((length = in.read(buffer)) != -1 ){ bo.write(buffer); } bo.flush(); in.close(); } } }
二、解压
package HelloWorld; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.Enumeration; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; import java.util.zip.ZipInputStream; public class reCompress { public static void main(String[] args) { try { unZip(new File("res/news/cc/date.zip")); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void unZip(File zipFile) throws IOException { // 得到压缩文件所在目录 String path = zipFile.getAbsolutePath(); /**替换所有的反斜杠*/ path = path.replaceAll("\\\\", "/"); /**截取压缩文件所在文件夹*/ path = path.substring(0, path.lastIndexOf("/")); /**获取压缩文件对象*/ ZipFile zip = new ZipFile(zipFile); InputStream in = null; OutputStream out = null; try { /**压缩文件中的所有实体循环*/ for (@SuppressWarnings("rawtypes") Enumeration entries = zip.entries(); entries.hasMoreElements();) { /**获取一个实体*/ ZipEntry entry = (ZipEntry) entries.nextElement(); /**获取实体名*/ String zipEntryName = entry.getName(); System.out.println(zipEntryName); /**获取实体的输出流*/ in = zip.getInputStream(entry); // outPath输出目录 /**解压后的文件存放在压缩文件同一目录下*/ String outPath = path + "/" + zipEntryName; // 判断路径是否存在,不存在则创建文件路径 /**创建文件的文件夹*/ File file = new File(outPath.substring(0, outPath.lastIndexOf('/'))); if (!file.exists()) { file.mkdirs(); } // 判断文件全路径是否为文件夹,如果是上面已经创建,不需要解压 if (new File(outPath).isDirectory()) { continue; } /**获取文件的输入流,写文件*/ out = new FileOutputStream(outPath); byte[] buf = new byte[1024]; int len; while ((len = in.read(buf)) > 0) { out.write(buf, 0, len); } } } catch (IOException e) { } finally { if (in != null) { in.close(); } if (out != null) { out.close(); } } zip.close(); } }
相关推荐
### 实现Java文件压缩与解压 #### 一、引言 在计算机科学领域,文件压缩与解压是一项非常实用的技术。它不仅能够减少文件占用的空间,提高存储效率,还能加速文件在网络中的传输速度。Java作为一种广泛使用的编程...
### Java文件压缩与解压知识点解析 #### 一、Java文件压缩概述 Java中的文件压缩主要涉及使用第三方库Apache Commons Compress或者Apache的工具包`apache.tools.zip`来进行操作。这两种方式都允许开发者轻松地对...
java 文件zip 压缩与解压 可以直接调用
综上所述,这个实践项目涵盖了Java文件压缩与解压缩的核心技术,是学习和理解Java I/O和压缩库的宝贵资源。通过阅读源代码和论文,开发者不仅可以学习如何在Java中进行文件压缩,还能了解到如何将这些技术应用于实际...
在Java编程环境中,处理文件压缩和解压缩是常见的任务,特别是在构建可执行的JAR包或者处理数据传输时。本文将深入探讨如何使用Java来处理ZIP文件,特别是针对标题所提及的“java 中 zip压缩文件解压工具类”。我们...
GZ是一种常用的文件压缩格式,它利用了gzip程序进行压缩,而在Java中,我们可以使用`java.util.zip`包中的类来实现对GZ文件的压缩和解压缩操作。 在给出的代码中,有两个主要的方法:`testGzipOutput()`用于解压GZ...
在Java编程语言中,文件的压缩与解压缩是常见的操作,尤其在数据传输、存储优化以及备份场景下显得尤为重要。本实践主要关注如何使用Java来处理ZIP格式的压缩文件,以下将详细介绍相关知识点。 1. **Java档案API...
Java压缩及解压tar、tar.z格式文件, 需要apache的包ant-1.7.1.jar 这个自己去搜索下下载
#### 一、Java文件压缩与解压技术概述 在Java开发中,文件的压缩与解压是一项非常实用的功能,尤其在处理大量数据时,通过压缩可以显著减少存储空间的需求以及网络传输的时间。Java标准库提供了`java.util.zip`包来...
这篇博客“java ftp上传 下载 文件压缩解压”很可能是关于如何使用Java实现FTP文件上传、下载以及文件的压缩与解压功能。下面我们将深入探讨这些知识点。 首先,FTP上传和下载是Java中常见的任务,通常通过`java...
java中通过ZipOutputStream和ZipInputStream实现了zip压缩和解压功能。java源码————资源共享,一起进步。
在Java编程环境中,处理压缩和解压缩文件是一...以上是关于Java实现带密码的ZIP文件压缩和解压的基本概念和实现细节。通过深入理解这些知识点,开发者可以构建自己的安全文件处理工具,满足对数据隐私和安全性的需求。
在Java中处理文件的压缩与解压时,经常会遇到中文文件名出现乱码的问题。这个问题主要源于Java中默认使用的编码方式与实际文件名编码不一致,尤其是在Windows系统下,文件名通常采用GB2312或GBK编码,而Java中的`...
在Java编程环境中,处理文件压缩和解压任务是常见的需求,尤其在数据传输或存储时。ZIP文件格式因其广泛支持和高效性而被广泛应用。本文将深入探讨如何使用Java实现ZIP文件的压缩与解压,重点讲解核心API,如`java....
本文将围绕Java实现哈夫曼编码的文件压缩与解压进行详细解析。 首先,我们看到`main`方法调用了`zipFile`和`unZipFile`两个静态方法,分别用于文件的压缩和解压缩操作。`zipFile`方法接收源文件路径和目标压缩文件...
虽然Ant本身不是直接用于文件压缩,但它包含的`ZipTask`和`UnzipTask`可以方便地在Ant脚本中进行文件压缩和解压。如果`ZipFileList.java`使用了Ant的功能,那么可能通过`org.apache.tools.ant.types.FileSet`选择要...
总结,Java中处理RAR文件压缩和解压需要借助第三方库,如Apache Commons Compress或jRar。选择哪种库取决于你的具体需求,如对RAR5格式的支持、性能优化等。在实现过程中,需要了解并掌握这些库的API,以及如何正确...