`
lolocomee
  • 浏览: 16454 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

ant包加压解压文件

阅读更多

org.apache.tools.zip这个其实就在sdk你面找到:C:\Sun\SDK\lib\ant\lib里面的ant.jar。

应用里面对文件,文件夹加压解压,用gb2312编码,解决文件名称乱码问题。

 

先来看看这个类:

package hellowordapp;

 

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipFile;
import org.apache.tools.zip.ZipOutputStream;
/**
 *
 * @author gdcic-zhang
 */
public class Zip {


    private static Zip instance = new Zip();

    public Zip() {
    }

 

    public static Zip getInstance() {
        return instance;
    }

 

    public synchronized void zip(String inputFilename, String zipFilename)
            throws IOException {
         System.out.println(inputFilename);
        zip(new File(inputFilename), zipFilename);
    }

 

    public synchronized void zip(File inputFile, String zipFilename) throws IOException {
        ZipOutputStream out = new ZipOutputStream(new FileOutputStream(
                new String(zipFilename.getBytes("gb2312"))));
        out.setEncoding("gb2312");
        try {
            zip(inputFile, out, "");
        } catch (IOException e) {
            throw e;
        } finally {
            out.close();
        }
    }

 

    private synchronized void zip(File inputFile, ZipOutputStream out, String base)
            throws IOException {
        if (inputFile.isDirectory()) {
            File[] inputFiles = inputFile.listFiles();
            out.putNextEntry(new ZipEntry(base + "/"));
            base = base.length() == 0 ? "" : base + "/";
            for (int i = 0; i < inputFiles.length; i++) {
                zip(inputFiles[i], out, base + inputFiles[i].getName());
            }

        } else {
            if (base.length() > 0) {
                out.putNextEntry(new ZipEntry(base));
            } else {
                out.putNextEntry(new ZipEntry(inputFile.getName()));
            }

            FileInputStream in = new FileInputStream(inputFile);
            try {
                int c;
                byte[] by = new byte[BUFFEREDSIZE];
                while ((c = in.read(by)) != -1) {
                    out.write(by, 0, c);
                }
            } catch (IOException e) {
                throw e;
            } finally {
                in.close();
            }
        }
    }

 

//解压

    public synchronized void unzip(String zipFilename, String outputDirectory)
            throws IOException {
        File outFile = new File(outputDirectory);
        if (!outFile.exists()) {
            outFile.mkdirs();
        }

        ZipFile zipFile = new ZipFile(zipFilename);
        Enumeration en = zipFile.getEntries();
        ZipEntry zipEntry = null;
        while (en.hasMoreElements()) {
            zipEntry = (ZipEntry) en.nextElement();
            if (zipEntry.isDirectory()) {
                // mkdir directory
                String dirName = zipEntry.getName();
                dirName = dirName.substring(0, dirName.length() - 1);

                File f = new File(outFile.getPath() + File.separator + dirName);
                f.mkdirs();

            } else {
                // unzip file
                File f = new File(outFile.getPath() + File.separator
                        + zipEntry.getName());
                f.createNewFile();
                InputStream in = zipFile.getInputStream(zipEntry);
                FileOutputStream out = new FileOutputStream(f);
                try {
                    int c;
                    byte[] by = new byte[BUFFEREDSIZE];
                    //while ((c = in.read(by)) != -1) {
                    //    out.write(by, 0, c);
                   // }
                    while ((c = in.read(by))>0){
                        out.write(by, 0 , c);
                    }
                    // out.flush();
                } catch (IOException e) {
                    throw e;
                } finally {
                    out.close();
                    in.close();
                }
            }
        }
    }

    private static final int BUFFEREDSIZE = 1024;  
}

 

 

这里是测试:(可以将文件变成文件夹,就加压文件夹了)

       zip bean = new Zip();
       try {
              bean.zip("e:/见天rar.txt", "e:/test.zip");
              bean.unzip("e:/test.zip", "e:/out/temp");
        } catch (IOException e) {
              e.printStackTrace();
        }

分享到:
评论

相关推荐

    利于apache提供的ant包压缩文件

    在给定的“利于apache提供的ant包压缩文件”主题中,我们可以深入探讨Ant在处理文件压缩方面的功能。 1. **Ant介绍**: Apache Ant是Apache软件基金会的一个项目,它起源于Jakarta项目,旨在替代Make工具,成为...

    ant打包配置文件build.xml

    ant打包配置文件,参考了博主的文章,作者:失语失芯不失梦 链接:https://www.jianshu.com/p/04cfce59890a 来源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    mac下ant打包android

    在给定的文件中,`apache-ant-1.9.4-bin.zip`是Ant的一个版本,你需要解压并将其添加到系统路径中,这样命令行就可以识别`ant`命令了。安装完成后,确保你的环境配置正确,包括Android SDK和相关的环境变量(如`...

    Android ANT批量打包教程及所有资源文件

    本文将详细介绍如何使用ANT进行Android应用的批量打包,并涵盖如何替换渠道号,以及所需的所有资源文件。 1. **ANT工具介绍** ANT是一个基于Java的构建工具,它可以读取XML格式的构建文件(build.xml),执行编译...

    利用ant.jar解压缩zip包

    总的来说,利用Apache Ant的ant.jar库,无论是通过Java代码还是Ant构建文件,都能方便、高效地解压缩ZIP文件,而且对于包含中文文件名的情况,它提供了良好的支持。在实际开发中,理解并熟练运用这类工具可以极大地...

    java项目ant打包脚本

    Ant是一个开源的、跨平台的Java项目构建工具,它通过XML配置文件(如`build.xml`)定义任务,这些任务可以是编译源代码、创建JAR文件、运行测试、部署应用等。XML文件中包含了构建过程的步骤和依赖关系,使得构建...

    用ant来解压文件

    下面我们将以一个例子来说明如何使用Ant解压ZIP文件: ```xml ``` 在这个例子中,`&lt;unzip&gt;`任务的`src`属性指定了要解压的ZIP文件路径,而`dest`属性则指定了解压后文件的目标位置。运行`ant unzip-file`...

    ant打包的build.xml文件

    一个普通java程序用ant打包的列子,完整的,里面采用的是eclipse自带的编译插件进行的打包,需要结合eclipse中的插件一起使用

    JAVA ANT包发布工具包

    要使用这个工具包,你需要先解压,然后将`bin`目录添加到系统路径中,这样就可以在命令行中直接运行`ant`命令了。 在实际开发中,ANT被广泛应用于Java项目的构建过程,从简单的编译、打包,到复杂的部署、测试,都...

    java的Ant打包工具

    Apache Ant的版本`apache-ant-1.8.2-bin`包含了Ant的二进制分发包,其中包含了Ant的可执行文件和必要的库文件,可以直接解压使用。 总之,Java的Ant打包工具是项目自动化构建的利器,通过灵活的配置和强大的功能,...

    ant-1.9.7jar包 java实现压缩文件文件夹

    至于“ant-1.9.7压缩资源包”,这通常会包含Ant的1.9.7版本的所有必需文件,包括JAR包和其他必要的文档、库和示例。这些资源可以帮助开发者在项目中快速集成和使用Ant,进行文件和文件夹的压缩操作。 总的来说,Ant...

    [原]使用Ant实现zip压缩解压功能

    本篇文章将深入探讨如何利用Ant实现ZIP压缩与解压的功能。Ant是基于Java的,它通过XML描述构建过程,使得项目构建过程更加标准化和可重复。 Ant本身并不直接支持ZIP操作,但可以通过内置的` zipfileset `和`unzip`...

    ant打包Web工程

    3. **定义任务(Tasks)**:Ant通过任务来执行具体的操作,例如`javac`用于编译Java源代码,`copy`用于复制文件,`jar`用于创建JAR包,`war`则用于打包Web应用。 4. **Web应用结构**:在打包Web应用时,理解标准的...

    J2EE中应用Ant包压缩导出的Excel文件并提供下载

    `Java压缩zip示例.txt`文件则可能是关于如何在Java中使用标准`java.util.zip`包进行压缩操作的示例代码。这个包提供了`ZipOutputStream`类,可以用来将多个文件写入ZIP流,从而创建ZIP文件。通常,我们会遍历要压缩...

    ant配置文件

    Ant能够处理编译Java源代码、生成JAR或WAR包、清理构建目录等任务。在myEclipse中,用户可以通过内置的Ant支持来创建和运行Ant构建脚本,这样可以提高开发效率,确保构建的一致性和可重复性。 标签“ant 蚂蚁配置”...

    ant 打包 java project 为ant

    标题中的“ant打包java project为jar”指的是使用Apache Ant工具将Java项目打包成JAR(Java Archive)文件的过程。Ant是Java开发中的一个构建工具,它以XML格式定义任务,可以自动化编译、测试、打包等流程。在这个...

    使用Ant构建批量压缩js、css文件脚本

    在本场景中,我们将关注如何利用Ant来批量压缩JavaScript(js)和CSS(css)文件,以优化网页加载速度并减小文件体积。这主要涉及到两个知识点:Ant脚本编写和文件压缩技术。 首先,让我们了解一下Ant。Ant是基于...

    ant.jar解压tar包支持中文文件名称

    使用ant.jar工具通过java程序来解压tar包文件,支持中文文件名。

    ant打包

    4. **资源处理**:Ant可以处理非Java文件,如图片、配置文件等,使用`&lt;copy&gt;`任务将它们复制到目标目录。 5. **打包JAR**:使用`&lt;jar&gt;`任务创建JAR文件,可以包含类文件、资源文件和MANIFEST.MF。 6. **定制规则**:...

    ant打包部署工具,官方下载

    8. **插件扩展**:Ant的强大之处在于其丰富的插件系统,通过引入额外的Ant任务,可以执行更复杂的操作,如部署到应用服务器、压缩或解压缩文件等。 9. **跨平台**:由于Ant是用Java编写的,因此它可以跨平台运行,...

Global site tag (gtag.js) - Google Analytics