`

操作Zip压缩文件_Zip2Utils

阅读更多
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 {

	private static final int BUF_SIZE = 1024 * 1024;
	
	public static void main(String[] args){
		Collection<File> resFileList = new ArrayList<File>();
		
		resFileList.add( new File("d://temp//1.txt"));
		resFileList.add( new File("d://temp//2.txt"));
		File file3 = new File("d://temp//test.zip");
		
		try {
			//压缩文件
			Zip2Utils.zipFiles(resFileList, file3, "this is test");
			//解压缩文件
			Zip2Utils.upZipFile(file3, "d://ddd");
		} catch (IOException e) {
			e.printStackTrace();
		}
		
	}
	
	public static void zipFiles(Collection<File> resFileList , File zipFile ,String comment) throws IOException{
		ZipOutputStream out  = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(zipFile),BUF_SIZE));
		for(File file:resFileList){
			Zip2Utils.zipFile(file, out, "");
		}
		out.close(); 
	}
	
	public static void zipFile(File resFile, ZipOutputStream zipout, String rootpath) throws IOException{
		rootpath = rootpath + (rootpath.trim().length() == 0 ? "" : File.separator) + resFile.getName();    
        System.out.println(rootpath);
		if (resFile.isDirectory()) {    
                File[] fileList = resFile.listFiles();    
                for (File file : fileList) {    
                        zipFile(file, zipout, rootpath);    
                }    
        } else {    
                byte buffer[] = new byte[BUF_SIZE];    
                BufferedInputStream in = new BufferedInputStream(new FileInputStream(resFile), BUF_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();    
        }    	
	}
	/**   
     * 解压缩一个文件   
     *   
     * @param zipFile        压缩文件   
     * @param folderPath 解压缩的目标目录   
     * @throws IOException 当压缩过程出错时抛出   
     */    
    public static void upZipFile(File zipFile, String folderPath) throws IOException {    
    		File targetFolder = new File(folderPath);
    		if(!targetFolder.exists()){
    			targetFolder.mkdir();
    		}
            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[BUF_SIZE];    
                    int realLength;    
                    while ((realLength = in.read(buffer)) > 0) {    
                            out.write(buffer, 0, realLength);    
                    }    
                    in.close();    
                    out.close();    
            }    
    }    

}

 

分享到:
评论

相关推荐

    zip_utils_src

    这些库提供了读取、写入和解压缩ZIP文件的功能。`zip_utils_src`可能包含了这些库的一个实现,或者是一个自定义的解决方案,用于创建和管理ZIP档案。 ZLib是一个广泛使用的压缩库,主要用于GZIP和DEFLATE算法。...

    zip_utils_src.7z

    "zip_utils_src"这个压缩包很可能是包含了一些用于操作Zip文件的源代码,可能包括了上述库的实现或封装。 使用C++ Zip库的主要步骤如下: 1. **初始化**:首先,需要初始化库,这通常涉及到打开一个现有的Zip文件...

    zip_utils_century4gy_C++ZipUtils压缩_Vc_zip_

    首先,`zip.h`和`zip.cpp`文件通常包含了创建、更新和管理ZIP压缩文件的相关函数和类定义。ZIP是一种广泛使用的文件格式,可以将多个文件和目录打包成一个单一的可移植文件,通常用于数据传输和存储。在C++中,为了...

    zip_utils_src.zip

    zip util 缩解压缩源码以及 VS2015 示例... https://www.codeproject.com/Articles/7530/Zip-Utils-Clean-Elegant-Simple-Cplusplus-Win

    zip_utils_src.rar

    zip的压缩与解压程序 zip.h zip.cpp unzip.h unzip.cpp 文件来源:http://www.codeproject.com/Articles/7530/Zip-Utils-clean-elegant-simple-C-Win

    c++ mfc 解压 压缩 源码 zip_utils_src

    2. 添加文件:逐个添加要压缩的文件到ZIP档案,通常需要提供源文件路径和ZIP内的文件名。 3. 设置压缩级别:可以选择不同的压缩级别以平衡速度和压缩比。 4. 提交更改:完成添加后,提交更改到ZIP文件。 5. 错误处理...

    Utils_cryptography_zip_

    Utils_cryptography_zip_ 是一个与密码学和zip压缩相关的库,它主要用于加密和解密数据。这个库结合了密码学的原理与ZIP文件格式的处理,以提供安全的数据存储和传输解决方案。在本文中,我们将深入探讨这个库的核心...

    utils-master_delphi_Utils_zip_

    Utils工具集包含了读写文件、创建删除目录、搜索文件、压缩解压等功能,使得对文件系统的操作变得简单直观,降低了出错概率。 6. **网络通信** 针对网络编程,Utils提供了基础的HTTP请求、TCP/IP套接字通信、...

    Alexandria_Upload_Utils-0.1.1-py2.py3-none-any.whl.zip

    描述中同样提到了“Alexandria_Upload_Utils-0.1.1-py2.py3-none-any.whl.zip”,这再次确认了这是个包含Python库的压缩文件。通常,这样的文件会在下载后通过`pip`等工具进行安装,以便在Python环境中使用。 标签...

    AISTLAB_utils-0.1-py2.py3-none-any.whl.zip

    标题"AISTLAB_utils-0.1-py2.py3-none-any.whl.zip"指出这是一个包含Python库"AISTLAB_utils"的压缩文件,版本为0.1。".whl"是Python的wheel格式,它是一种预编译的Python软件包,用于简化安装过程,特别是对于依赖C...

    PyPI 官网下载 | global_utils_88-0.0.1.tar.gz

    `global_utils_88-0.0.1.tar.gz` 是该库的打包文件,采用了 `.tar.gz` 的压缩格式。这种格式结合了 tar(用于打包多个文件)和 gzip(用于压缩)两种工具,是 Linux 和 Unix 系统中常见的文件打包和压缩方式。在 ...

    AISTLAB_utils-0.1.2-py2.py3-none-any.whl.zip

    要使用这个库,你需要首先解压 AISTLAB_utils-0.1.2-py2.py3-none-any.whl.zip 文件,然后在命令行中使用 `pip install AISTLAB_utils-0.1.2-py2.py3-none-any.whl` 命令进行安装(确保你有正确的路径)。...

    Alexandria_Upload_Utils-0.1.2-py2.py3-none-any.whl.zip

    总结来说,"Alexandria_Upload_Utils-0.1.2-py2.py3-none-any.whl.zip"是一个Python库的分发文件,采用Wheel格式并以ZIP压缩,支持Python 2和3,无特定平台依赖。通过正确的解压和使用pip,开发者可以便捷地在他们的...

    yaffs2utils-master.zip

    在标题中提到的“yaffs2utils-master.zip”是一个包含YAFFS2工具集的压缩文件,主要针对Ubuntu操作系统。这个工具集可以帮助用户处理YAFFS2文件系统,特别是解压和操作由海思(HiSilicon)的mkyaffs2image610工具...

    Zip Utils - clean, elegant, simple, C++/Win32

    2. **解压缩**:可以将ZIP文件中的内容解压到指定的目录。同样,通过API接口,开发者可以指定ZIP文件和解压目标位置,实现解压缩操作。 3. **API 设计**:Zip Utils 的API设计遵循了C++的习惯,可能是面向对象或者...

    zip基于c/c++的压缩解压缩程序

    本项目涉及的是一个使用C/C++语言实现的zip压缩与解压缩程序。这个程序允许开发者在不依赖第三方库的情况下,对文件进行压缩和解压缩操作,提高了程序的自给自足性和灵活性。 首先,我们来详细了解一下ZIP文件格式...

    Ionic.Utils.Zip 1.3-1.7版本

    - **简单易用的API**:Ionic.Utils.Zip提供了直观的C#接口,使得创建和操作ZIP文件变得轻松。例如,`ZipFile`类用于读写ZIP文件,`ZipEntry`类代表ZIP文件中的单个条目。 - **流式处理**:支持使用流进行压缩和解...

Global site tag (gtag.js) - Google Analytics