`
tw5566
  • 浏览: 462492 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

java对文件的操作(三)----------------压缩文件

    博客分类:
  • java
阅读更多
package com.tw.file.util;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.zip.ZipOutputStream;

public class Zip2Utils {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
    
		Collection<File> resFileList = new ArrayList<File>(); 
        resFileList.add(new File("E:\\1.txt")); 
        resFileList.add(new File("E:\\2.txt")); 
        File zipFile = new File("e:\\txxxt.zip"); 

        try {
			Zip2Utils.zipFiles(resFileList, zipFile);   //测试OK
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} 

	}
	
	 private static final int BUFF_SIZE = 1024 * 1024;     //1M Byte 

     /** 
      * 批量压缩文件(夹) 
      * 
      * @param resFileList 要压缩的文件(夹)列表 
      * @param zipFile         生成的压缩文件 
      * @throws IOException 当压缩过程出错时抛出 
      */ 
     public static void zipFiles(Collection<File> resFileList, File zipFile) throws IOException { 
             ZipOutputStream zipout = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(zipFile), BUFF_SIZE)); 
             for (File resFile : resFileList) { 
                     zipFile(resFile, zipout, ""); 
             } 
             zipout.close(); 
     } 

     /** 
      * 批量压缩文件(夹) 
      * 
      * @param resFileList 要压缩的文件(夹)列表 
      * @param zipFile         生成的压缩文件 
      * @param comment         压缩文件的注释 
      * @throws IOException 当压缩过程出错时抛出 
      */ 
     public static void zipFiles(Collection<File> resFileList, File zipFile, String comment) throws IOException { 
             ZipOutputStream zipout = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(zipFile), BUFF_SIZE)); 
             for (File resFile : resFileList) { 
                     zipFile(resFile, zipout, ""); 
             } 
             zipout.setComment(comment); 
             zipout.close(); 
     } 

     /** 
      * 解压缩一个文件 
      * 
      * @param zipFile        压缩文件 
      * @param folderPath 解压缩的目标目录 
      * @throws IOException 当压缩过程出错时抛出 
      */ 
     public static void upZipFile(File zipFile, String folderPath) throws IOException { 
             ZipFile zf = new ZipFile(zipFile); 
             for (Enumeration entries = zf.entries(); entries.hasMoreElements();) { 
                     ZipEntry entry = ((ZipEntry) entries.nextElement()); 
                     InputStream in = zf.getInputStream(entry); 
                     OutputStream out = new FileOutputStream(folderPath + File.separator + entry.getName()); 
                     byte buffer[] = new byte[BUFF_SIZE]; 
                     int realLength; 
                     while ((realLength = in.read(buffer)) > 0) { 
                             out.write(buffer, 0, realLength); 
                     } 
                     in.close(); 
                     out.close(); 
             } 
     } 

     private static void zipFile(File resFile, ZipOutputStream zipout, String rootpath) throws IOException { 
             rootpath = rootpath + (rootpath.trim().length() == 0 ? "" : File.separator) + resFile.getName(); 
             if (resFile.isDirectory()) { 
                     File[] fileList = resFile.listFiles(); 
                     for (File file : fileList) { 
                             zipFile(file, zipout, rootpath); 
                     } 
             } else { 
                     byte buffer[] = new byte[BUFF_SIZE]; 
                     BufferedInputStream in = new BufferedInputStream(new FileInputStream(resFile), BUFF_SIZE); 
                     zipout.putNextEntry(new ZipEntry(rootpath)); 
                     int realLength; 
                     while ((realLength = in.read(buffer)) != -1) { 
                             zipout.write(buffer, 0, realLength); 
                     } 
                     in.close(); 
                     zipout.flush(); 
                     zipout.closeEntry(); 
             } 
     } 

	
}
分享到:
评论

相关推荐

    eclipse-java-2023-09-R-linux-gtk-x86-64.tar.gz

    然后,可以使用命令行工具解压缩文件,例如使用`tar -zxvf eclipse-java-2023-09-R-linux-gtk-x86_64.tar.gz`命令。解压缩后,用户可以在终端中导航到解压后的目录,并通过运行`./eclipse`来启动Eclipse IDE。 在...

    java-8-openjdk-amd64 资源包下载和解包方法.

    2. **解压文件**:打开终端,使用 `cd` 命令进入包含压缩文件的目录。然后,使用以下命令解压: ``` tar -zxvf java-8-openjdk-amd64.tar.gz ``` 这个命令中,`-z` 表示使用gzip解压,`-x` 表示解压,`-v` 提供...

    eclipse-java-2023-12-R-win32-x86-64.zip

    eclipse-java-2023-12-R-win32-x86_64.zip 适用于Windows系统

    eclipse-java-2022-06-R-linux-gtk-x86_64.tar.gz

    2. 使用`cd`命令进入包含压缩文件的目录。 3. 输入`tar -zxvf eclipse-java-2022-06-R-linux-gtk-x86_64.tar.gz`,执行解压命令。 4. 解压完成后,会生成一个名为`eclipse`的目录,里面包含了Eclipse IDE的所有文件...

    eclipse-java-2022-06-R-win32-x86_64.zip

    【压缩包子文件的文件名称列表】中的“eclipse”可能是指解压后的Eclipse安装目录,通常包含运行Eclipse所需的全部文件,如可执行文件(eclipse.exe)、工作空间配置、插件、库和其他必要组件。 关于Eclipse Java ...

    eclipse-java-2021-06-R-win32-x86_64

    【压缩包子文件的文件名称列表】"eclipse-java-2021-06_win64" 指的是该压缩包内的主程序文件,可能包含Eclipse IDE的可执行文件、库、插件和其他必要的配置文件,用于在Windows 64位系统上安装和运行Eclipse。...

    mysql-connector-java-3.0.16-ga-bin.jar

    MySQL Connector/J是MySQL数据库与Java应用程序之间的重要桥梁,它是一个实现了Java Database Connectivity (JDBC) API的驱动程序,使得Java开发者能够轻松地在Java应用中访问MySQL数据库。"mysql-connector-java-...

    eclipse-java-2022-03-R-linux-gtk-x86_64.tar.gz

    标题中的“eclipse-java-2022-03-R-linux-gtk-x86_64.tar.gz”指的是Eclipse IDE for Java开发者的特定版本,适用于2022年3月发布(R代表Release),针对Linux操作系统x86_64架构。这个压缩包采用的是tar.gz格式,是...

    java的文件比较 diffutils-1.2.1.jar

    总之,DiffUtils-1.2.1.jar是一个强大的Java文件比较工具,能够帮助开发者有效地处理文本和自定义对象的差异。结合其源码,不仅可以直接在项目中使用,也能学习到关于文件比较算法和数据结构的相关知识,提升编程...

    java--QQ java--QQjava--QQjava--QQ

    【压缩包子文件的文件名称列表】:java(QQ) 只有一个文件名“java(QQ)”给出,它可能是一个源代码文件、配置文件或者数据文件。根据命名,我们可以猜测这个文件包含了使用Java编写的与QQ有关的代码,可能是QQ登录...

    eclipse-java-2023-09-R-win32-x86-64.zip

    4. **安装和运行**: 解压缩文件后,用户通常会找到一个名为"Eclipse"的可执行文件,双击运行即可启动Eclipse IDE。在首次启动时,用户需要配置工作空间,这是Eclipse保存项目和设置的地方。 5. **Eclipse插件生态**...

    eclipse-java-2021-09-R-win32-x86_64.zip

    在实际使用中,用户需要先解压缩文件,然后运行“eclipse”程序启动Eclipse IDE。为了更好地利用Eclipse,用户还可以根据自己的需求安装额外的插件,比如支持其他语言(如Python或C++)、集成版本控制系统(如Git)...

    eclipse-java-2020-06-R-win32-x86_64.rar

    标题 "eclipse-java-2020-06-R-win32-x86_64.rar" 提供的信息表明这是一个Eclipse IDE的特定版本,专为Java开发设计,适用于Windows 32位和64位操作系统。Eclipse是全球开发者广泛使用的开源集成开发环境(IDE),...

    java-8-openjdk-amd64.tar.gz

    "java-8-openjdk-amd64.tar.gz"是一个压缩文件,采用gzip压缩格式,包含OpenJDK 8的AMD64版本的所有必要组件,如Java虚拟机(JVM)、Java类库和开发工具。 在Ubuntu 12.04(代号 Precise Pangolin)这样的Linux发行...

    eclipse-java-linux-gtk-x86_64.tar.gz

    2. 解压:使用命令行工具(如`tar`)解压缩文件,通常命令是`tar -zxvf eclipse-java-linux-gtk-x86_64.tar.gz`。 3. 移动:将解压后的“eclipse”目录移动到你希望存放的应用程序目录,例如`/opt/eclipse`。 4. ...

    eclipse-java-2020-09-R-win32-x86_64.zip

    Java编译器将源代码(.java文件)转换成字节码(.class文件),而Java虚拟机则负责执行这些字节码。JDK是开发和部署Java应用的必备环境。 标签“java编译器与jdk下载”表明这个压缩包可能包含了JDK的安装程序,这...

    eclipse-java-2020-06-R-win32-x86_64.zip

    1. 下载压缩文件后,解压缩到一个合适的目录。 2. 双击运行eclipse.exe启动Eclipse IDE。 3. 首次启动时,可能需要设置工作空间,这是存储项目的地方。 4. 要安装JavaEE插件,可以通过菜单栏的“帮助”&gt;“Eclipse ...

    jdk-1.7-java-7-openjdk-amd64.zip

    标题中的"jdk-1.7-java-7-openjdk-amd64.zip"表明这是一个Java开发工具包(JDK)的压缩文件,版本为1.7,适用于AMD64架构的Linux系统。OpenJDK是Java Development Kit的一个开源实现,由Oracle公司支持并维护。这个...

    eclipse-java-2022-03-R-linux-gtk-aarch64.tar.gz

    压缩包子文件的“eclipse”可能是解压后得到Eclipse IDE的根目录,包含启动脚本、配置文件、插件和工作区等必要组件。用户在解压后,通常需要按照指定的步骤配置环境变量和启动脚本,以便在aarch64架构的Linux系统上...

Global site tag (gtag.js) - Google Analytics