`
chenlb
  • 浏览: 695810 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

java 压缩目录为 zip

阅读更多

      用java好久了,还没有写个压缩文件的示例,昨晚弄了下,把写下来,以后可以看。

关系到
java.util.zip.ZipEntry
java.util.zip.ZipOutputStream

如果要解决中文文件名问题,用到ant.jar

这两个类。

ZipOutputStream.putNextEntry(ZipEntry);就可以了,然后ZipOutputStream.wirte();就得了。

package net.blogjava.chenlb.zip;

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.OutputStream;
//import java.util.zip.ZipEntry;
//import java.util.zip.ZipOutputStream;
//用ant.jar的zip.*可以解决中文文件名问题
import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipOutputStream;

/**
 * 压缩文件.
 * 2007-10-17 下午11:19:50
 * 
@author chenlb
 
*/
public class RecursiveZip {

    
    
public static void main(String[] args) {

        RecursiveZip recursiveZip 
= new RecursiveZip();
        System.out.println(
"====开始====");
        
try {
            OutputStream os 
= new FileOutputStream("e:/doc-recursive.zip");
            BufferedOutputStream bs 
= new BufferedOutputStream(os);
            ZipOutputStream zo 
= new ZipOutputStream(bs);
            
            
//recursiveZip.zip("e:/recursive-zip/中文文件名.txt", new File("e:/recursive-zip"), zo, true, true);
            recursiveZip.zip("e:/recursive-zip"new File("e:/recursive-zip"), zo, truetrue);
            
            zo.closeEntry();
            zo.close();
        } 
catch (FileNotFoundException e) {
            e.printStackTrace();
        } 
catch (IOException e) {
            e.printStackTrace();
        }
        System.out.println(
"====完成====");
    }

    
/**
     * 
@param path 要压缩的路径, 可以是目录, 也可以是文件.
     * 
@param basePath 如果path是目录,它一般为new File(path), 作用是:使输出的zip文件以此目录为根目录, 如果为null它只压缩文件, 不解压目录.
     * 
@param zo 压缩输出流
     * 
@param isRecursive 是否递归
     * 
@param isOutBlankDir 是否输出空目录, 要使输出空目录为true,同时baseFile不为null.
     * 
@throws IOException
     
*/
    
public void zip(String path, File basePath, ZipOutputStream zo, boolean isRecursive, boolean isOutBlankDir) throws IOException {
        
        File inFile 
= new File(path);

        File[] files 
= new File[0];
        
if(inFile.isDirectory()) {    //是目录
            files = inFile.listFiles();
        } 
else if(inFile.isFile()) {    //是文件
            files = new File[1];
            files[
0= inFile;
        }
        
byte[] buf = new byte[1024];
        
int len;
        
//System.out.println("baseFile: "+baseFile.getPath());
        for(int i=0; i<files.length; i++) {
            String pathName 
= "";
            
if(basePath != null) {
                
if(basePath.isDirectory()) {
                    pathName 
= files[i].getPath().substring(basePath.getPath().length()+1);
                } 
else {//文件
                    pathName = files[i].getPath().substring(basePath.getParent().length()+1);
                }
            } 
else {
                pathName 
= files[i].getName();
            }
            System.out.println(pathName);
            
if(files[i].isDirectory()) {
                
if(isOutBlankDir && basePath != null) {    
                    zo.putNextEntry(
new ZipEntry(pathName+"/"));    //可以使空目录也放进去
                }
                
if(isRecursive) {    //递归
                    zip(files[i].getPath(), basePath, zo, isRecursive, isOutBlankDir);
                }
            } 
else {
                FileInputStream fin 
= new FileInputStream(files[i]);
                zo.putNextEntry(
new ZipEntry(pathName));
                
while((len=fin.read(buf))>0) {
                    zo.write(buf,
0,len);
                }
                fin.close();
            }
        }
    }
}


分享到:
评论

相关推荐

    java将文件夹压缩成zip,解压zip压缩包

    本篇文章将详细探讨如何使用Java内置的IO流来实现文件夹的zip压缩以及zip压缩包的解压,无需依赖其他的第三方库如Apache Commons IO或JavaZip。 ### 文件夹压缩成ZIP 首先,我们需要理解如何将一个文件夹及其内容...

    java压缩文件夹为zip

    java.util.zip工具包里面的类实现文件夹的zip压缩。具体会用到FileInputStream,CheckedOutputStream,BufferedInputStream,ZipOutputStream.

    java压缩文件,zip打包

    应用java来压缩需要打包的文件,在系统管理中将毛哥路径或者某个文件夹压缩成zip包

    Java把文件压缩成zip

    ### Java将文件压缩为ZIP的方法 #### 知识点概览 本文主要介绍如何使用Java实现文件的ZIP压缩功能,并提供了完整的代码示例。通过学习本文,你可以掌握以下几个知识点: 1. 使用`java.util.zip`包中的类进行文件...

    Java压缩文件目录成ZIP包最新技巧

    ### Java压缩文件目录成ZIP包最新技巧 在Java开发中,对文件或目录进行压缩是一项常见且实用的功能。本文将详细介绍如何使用`java.util.zip`包中的类来压缩文件及目录,并解决其中的一个常见问题——中文文件名或...

    java压缩zip文件解决中文乱码问题

    在Java编程中,处理文件压缩和解压是常见的任务,特别是使用ZIP格式。然而,当涉及到包含中文字符的文件或目录时,可能会遇到乱码问题。这个问题主要源于字符编码的不一致,通常需要正确设置字符集来确保中文字符在...

    Java压缩和解压缩zip文件

    本篇文章将详细探讨如何使用Java内置的类库来实现ZIP文件的压缩和解压缩,以及解决中文文件名出现乱码的问题。 首先,我们要了解Java中处理ZIP文件的核心类:`java.util.zip.ZipOutputStream` 和 `java.util.zip....

    java多文件压缩成zip文件并实现下载

    在Java编程中,将多个文件压缩成一个ZIP文件并实现下载是一个常见的任务,尤其是在处理大量数据或文件分发时。这个过程涉及到Java的I/O流、压缩和HTTP响应的使用。下面将详细介绍如何实现这个功能。 首先,我们需要...

    Java压缩解压ZIP之Zip4j

    对于解压缩ZIP文件,`ZipFile`类也提供了`extractAll(String outputPath)`方法,可以将ZIP文件解压到指定的目录下。如果ZIP文件被加密,我们需要在解压前提供正确的密码。 ```java String outputFolder = "path/to/...

    java实现的解压与压缩 zip和rar类型的

    在Java编程环境中,处理压缩和解压缩文件是常见的任务,主要涉及到两个标准库中的类:`java.util.zip`和第三方库如Apache Commons Compress。本文将深入探讨如何使用Java实现ZIP和RAR类型的压缩与解压操作,以及相关...

    Java实现将多目录多层级文件打成ZIP包,以及解压ZIP包

    本文将详细讲解如何使用Java实现将多目录多层级的文件打成ZIP包,以及如何解压这些ZIP包。我们将主要关注`FileUtils.java`这个类,以及依赖的`commons-compress-1.1.jar`库。 `commons-compress-1.1.jar`是Apache ...

    用java.util.zip包现数据压缩与解压

    ### 使用 Java.util.zip 包实现数据压缩与解压 在计算机科学领域,数据压缩技术是一项重要的功能,它能够帮助减少存储空间的需求以及提高网络传输效率。本文将通过一系列的示例来详细介绍如何利用 Java 中的 `java....

    java压缩文件生成带密码的zip包,解压带密码的zip包的工具类

    * 如果以路径分隔符(File.separator)结尾,则视为目录,压缩文件名取源文件名,以.zip为后缀,否则视为文件名. * @param src 要压缩的文件或文件夹路径 * @param dest 压缩文件存放路径 * @param isCreateDir 是否在...

    java zip文件压缩 可以对目录进行压缩

    使用java的zip压缩库 对文件和文件夹实现压缩

    java实现压缩和压缩zip格式文件的功能

    解压缩ZIP文件的过程则相反,需要使用`ZipInputStream`从ZIP文件中读取`ZipEntry`并写入目标目录。以下是一个基本的解压缩方法: 1. 打开ZIP文件的`FileInputStream`。 2. 创建`ZipInputStream`,从输入流中读取ZIP...

    java 操作Zip文件(压缩、解压、加密).zip

    - **解压缩任务**:使用`unzip`任务可以解压缩Zip文件到指定的目标目录。 - **Ant脚本**:Ant通过XML格式的构建文件来定义任务,这使得整个过程可配置且易于自动化。 在实际应用中,如果你的项目依赖于这两个库,...

    JAVA解压ZIP格式的压缩包_java解压缩_zip_

    在给定的压缩包文件中,包含了一个名为"JAVA解压ZIP格式的压缩包.docx"的文档,这可能是对解压过程的详细说明或补充信息。在实际操作中,你可以将上述代码与这个文档结合,以获得更深入的理解和实践指导。

    java打包目录文件为ZIP

    ### Java 打包目录文件为 ZIP 的实现方法 在 Java 中,经常需要处理文件压缩与解压的操作。本文将详细介绍如何使用 Java 实现目录文件的 ZIP 压缩功能,并提供一个具体的示例代码。 #### 核心概念 1. **Java Zip ...

    java实现ZIP压缩

    java实现zip压缩功能,java实现zip压缩功能,java实现zip压缩功能,java实现zip压缩功能,java实现zip压缩功能,java实现zip压缩功能,java实现zip压缩功能,java实现zip压缩功能,java实现zip压缩功能,java实现zip...

    JAVA文件压缩与解压缩实践,java解压缩zip文件,Java源码.zip

    在Java编程语言中,文件的压缩与解压缩是常见的操作,尤其在数据传输、存储优化以及备份场景下显得尤为重要。本实践主要关注如何使用Java来处理ZIP格式的压缩文件,以下将详细介绍相关知识点。 1. **Java档案API...

Global site tag (gtag.js) - Google Analytics