`
ljs120ljs
  • 浏览: 7630 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

java 对文件或文件夹的压缩与解压(ant.jar)

阅读更多
package selftest;

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.Enumeration;

import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipFile;
import org.apache.tools.zip.ZipOutputStream;

/**
* 文件压缩和解压
* @author newuser
*用java.util.zip下的工具压缩
*用ant.jar包里面的工具压缩
*/
public class Zip
{
private int count;


public int getCount()
{
return count;
}

public void setCount(int count)
{
this.count = count;
}
/**
* @param args
*/
public static void main(String[] args)
{
try
{

Zip zip = new Zip();
zip.toFile("D:\\apache-ant-1.7.1.zip", "D:\\apache");
//zip.unzip("D:\\apache-ant-1.7.1.zip", "D:\\apache");

System.out.println("ok");

}
catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void unzip(String zipFileName, String extPlace) throws Exception {  
        try {  
            (new File(extPlace)).mkdirs();  
            File f = new File(zipFileName);  
            ZipFile zipFile = new ZipFile(zipFileName);  
            if((!f.exists()) && (f.length() <= 0)) {  
                throw new Exception("要解压的文件不存在!");  
            }  
            String strPath, gbkPath, strtemp;  
            File tempFile = new File(extPlace);  
            strPath = tempFile.getAbsolutePath();  
            java.util.Enumeration e = zipFile.getEntries();  
            while(e.hasMoreElements()){  
                org.apache.tools.zip.ZipEntry zipEnt = (ZipEntry) e.nextElement();  
                gbkPath=zipEnt.getName();  
                if(zipEnt.isDirectory()){  
                    strtemp = strPath + File.separator + gbkPath;  
                    File dir = new File(strtemp);  
                    dir.mkdirs();  
                    continue;  
                } else {  
                    //读写文件  
                    InputStream is = zipFile.getInputStream(zipEnt);  
                    BufferedInputStream bis = new BufferedInputStream(is);  
                    gbkPath=zipEnt.getName();  
                    strtemp = strPath + File.separator + gbkPath;  
                  
                    //建目录  
                    String strsubdir = gbkPath;  
                    for(int i = 0; i < strsubdir.length(); i++) {  
                        if(strsubdir.substring(i, i + 1).equalsIgnoreCase(File.separator)) {  
                            String temp = strPath + File.separator + strsubdir.substring(0, i);  
                            File subdir = new File(temp);  
                            if(!subdir.exists())  
                            subdir.mkdir();  
                        }  
                    }  
                    FileOutputStream fos = new FileOutputStream(strtemp);  
                    BufferedOutputStream bos = new BufferedOutputStream(fos);  
                    int c;  
                    while((c = bis.read()) != -1) {  
                        bos.write((byte) c);  
                    }  
                    bos.close();  
                    fos.close();  
                }  
            }  
        } catch(Exception e) {  
            e.printStackTrace();  
            throw e;  
        }  
    }  




/**
* 递归压缩文件
* @param path 被压缩的文件或文件夹
* @param zos  压缩流 ant.jar
*/
public void toZip(String path, String basePath, ZipOutputStream zos, Zip zip)
{
try
{
File srcFile = new File(path);
if (srcFile.exists())
{
File[] files = null;
if (srcFile.isDirectory())//目录
{
files = srcFile.listFiles();//此目录中的所有文件或文件夹
}
else if (srcFile.isFile())//文件
{
files = new File[1];
files[0] = srcFile;
}
//开始压缩
if (files != null)
{
File tempFile = null;
String tempFileName = null;

for (int i = 0; i < files.length; i++)
{
tempFile = files[i];
/*
* C:\test
* C:\test\bin
* C:\test\ttt\test.txt
*/
zip.setCount(zip.getCount()+1);
tempFileName = tempFile.getPath().replace(basePath+File.separator, "");
if (tempFile.isDirectory())
{  
//tempFileName = tempFile.getPath().substring(srcFile.getPath().length()+1);
zos.putNextEntry(new ZipEntry(tempFileName+"/"));
toZip(tempFile.getPath(),basePath, zos, zip);
}
else if(tempFile.isFile())
{
//tempFileName = tempFile.getPath().substring(srcFile.getParent().length()+1);
zos.putNextEntry(new ZipEntry(tempFileName));
//DataInputStream dis = new DataInputStream(new FileInputStream(tempFile));
FileInputStream fin = new FileInputStream(files[i]);
              
byte[] b = new byte[1048];
int len = 0;
while ((len = fin.read(b)) > 0)
{
zos.write(b, 0, len);
}
fin.close();
}

System.out.println(tempFileName);
}
}
}
else
{
System.out.println("文件或文件夹不存在!");
}
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
  • ant.jar (1.4 MB)
  • 下载次数: 53
分享到:
评论

相关推荐

    JAVA解压ZIP多层目录文件(需ant.jar

    ### JAVA解压ZIP多层目录文件(需ant.jar) #### 概述 本文将详细介绍一个Java方法,该方法用于解压包含多层目录结构的ZIP文件,并能够支持中文文件名。这种方法利用了Apache Ant库中的`org.apache.tools.zip....

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

    Java操作Zip文件主要涉及到对文件和目录的压缩与解压缩,以及在必要时对压缩文件进行加密处理。这里我们重点讨论使用两个库:`zip4j`和`Apache Ant`来实现这些功能。 1. **zip4j库**:`zip4j-1.3.2.jar`是一个用...

    解压zip压缩文件,支持多文件目录解压,中文乱码问题

    在使用Java对ZIP压缩文件进行解压的方式中有两种,一种是使用apache提供的ant.jar工具包,但是如果ZIP文件中含有中文名称的文件,在解压后,文件名将出现乱码,另一种是使用Java自身JDK中java.util.zip包下工具类,...

    java 下载文件 压缩且删除源文件(支持文件夹与文件)

    zip,然后下载删除源文件与压缩文件。 3、可以指定文件都为最后生成为zip文件下载,且删除源文件。 1、压缩文件或者目录(只是压缩不删除):zipFileOrDirectory 2、程序自动判断如果是文件那么就是源文件下载,...

    java文件压缩与解压.doc

    这段代码实现了将指定路径下的文件或文件夹压缩成ZIP文件的功能。关键步骤包括: - 检查并创建目标目录。 - 设置编码格式。 - 遍历文件夹并将每个文件加入ZIP文件。 - 关闭所有打开的流。 #### 五、文件解压流程 ...

    java 压缩和解压 demo 解决中文乱码

    java 压缩和解压 demo 解决中文乱码 这是本人做好的一个关于java压缩、解压缩文件或文件夹的demo,解决了中文乱码的问题,可以压缩或解压缩嵌套文件夹。一个ZipHelper + ant.jar轻松解决^_^,希望可以帮助到大家!具体...

    java课程设计之批量压缩文件

    在这个项目中,使用了Apache Ant的jar包(apache-ant-1.8.2.jar),它是一个强大的构建工具,也包含了文件操作和压缩功能。Apache Ant的`ZipTask`可以用来创建、更新或提取ZIP文件,非常适合于批量压缩任务。要使用...

    java 读取ZIP和RAR压缩包的目录结构

    java ZIP和RAR 压缩包 目录结构。 1.ant.jar 解决java自带zip不能读取中文压缩包的问题; 2.需要安装WINRAR软件,以便解压rar文件,然后获取对应目录; 3.实现在线预览压缩包目录结构的功能;

    apache-ant-1.6.5-bin.zip_ ant 1.6.5_ant_ant-1.6.5_apache ant win

    "apache-ant-1.6.5-bin"文件夹内包含了所有运行Ant所需的文件,包括JAR包和必要的脚本。 - 在Windows上设置Ant通常涉及解压这个ZIP文件,设置ANT_HOME环境变量,并将bin目录添加到PATH环境变量中。 4. **使用Ant**...

    java解压压缩jar包

    在Java编程环境中,有时我们需要对文件进行压缩或解压缩操作,比如处理.jar(Java档案)或.zip(ZIP档案)文件。这些操作在软件开发、数据传输以及资源打包等场景中非常常见。本篇将深入讲解如何使用Java来解压.jar...

    Java操作Ant压缩和解压文件及批量打包Anroid应用

    在Java编程中,有时我们需要对文件进行压缩和解压缩操作,比如在Android应用开发中,为了便于分发和存储,通常会将应用打包成ZIP或TAR格式的压缩包。虽然Java标准库提供了对ZIP等压缩格式的支持,但是面对包含中文...

    java_memcached-release_1.6.zip

    2. 编译后的jar文件(如:lib/slabsj-1.6.jar),这是实际运行时需要引入到Java项目的类库,包含了所有必要的类和方法,用于与Memcached服务器通信。 3. 文档(docs目录),可能包括API文档、用户手册或开发者指南,...

    apache-ant-1.9.2-bin.tar.gz

    2. `lib` 目录:存放Ant运行所需的JAR文件,这些库包含了Ant的核心功能和可能的扩展任务。 3. `LICENSE` 和 `NOTICE` 文件:包含了Apache软件基金会的许可证信息和版权声明。 4. `README` 文件:可能提供了关于如何...

    北化java作业附自编jar运行软件

    【压缩包子文件的文件名称列表】虽然只给出了"新建文件夹",但通常在实际的Java作业压缩包中,会包含源代码文件(.java)、编译后的字节码文件(.class)、项目配置文件(如build.xml,如果是Ant项目)、测试用例...

    java压缩demo

    一个我做好的java压缩/解压缩文件的demo,一个ZipHelper类+ant.jar包,解决了压缩或解压缩后中文乱码的问题!,可解压嵌套文件夹,用的过程只需new一个ZipHelper,调用该类方法即可,demo里有详细说明!^_^

    javasqlite-20090430.tar.gz

    通常,这种情况下解压缩后会得到一个包含源代码、库文件、文档、示例代码或其他相关资源的文件夹。在这个目录中,我们可以期待找到以下内容: 1. **源代码**:JavaSQLite的源代码,可能分为编译前的.java文件和编译...

    FitNesse安装与编译[参考].pdf

    解压缩后,会得到一个包含FitNesseRoot、README.txt、dotnet、license.txt、fitnesse.jar、run.bat和run.sh等文件的fitnesse文件夹。双击运行run.bat(Windows)或run.sh(Linux),默认监听80端口。如果该端口已被...

    java解压缩

    根据提供的文件信息,我们可以归纳出几个关键的知识点,这些知识点主要围绕着Java中的压缩与解压缩操作。下面将对这些知识点进行详细的阐述。 ### 1. Java中的ZIP压缩 #### 压缩基本原理 在Java中,可以利用`java....

    Ant使用指南-Ant入门手册

    2. **解压文件**:将下载的 ZIP 文件解压缩到期望的目录中。 3. **设置环境变量**:将 Ant 的 bin 目录添加到系统的 PATH 环境变量中,使得可以从命令行任意位置调用 Ant 命令。 4. **验证安装**:打开命令提示符或...

    BB使用Ant进行编译.pdf

    1. **解压Ant和bb-ant-tool** - 将下载好的Ant和bb-ant-tool解压缩到任意位置。这一步是为了准备好构建环境。 2. **修改`build.xml`文件** - 打开项目的`build.xml`文件,该文件是Ant构建的核心配置文件,其中...

Global site tag (gtag.js) - Google Analytics