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包压缩文件”主题中,我们可以深入探讨Ant在处理文件压缩方面的功能。 1. **Ant介绍**: Apache Ant是Apache软件基金会的一个项目,它起源于Jakarta项目,旨在替代Make工具,成为...
ant打包配置文件,参考了博主的文章,作者:失语失芯不失梦 链接:https://www.jianshu.com/p/04cfce59890a 来源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
在给定的文件中,`apache-ant-1.9.4-bin.zip`是Ant的一个版本,你需要解压并将其添加到系统路径中,这样命令行就可以识别`ant`命令了。安装完成后,确保你的环境配置正确,包括Android SDK和相关的环境变量(如`...
本文将详细介绍如何使用ANT进行Android应用的批量打包,并涵盖如何替换渠道号,以及所需的所有资源文件。 1. **ANT工具介绍** ANT是一个基于Java的构建工具,它可以读取XML格式的构建文件(build.xml),执行编译...
总的来说,利用Apache Ant的ant.jar库,无论是通过Java代码还是Ant构建文件,都能方便、高效地解压缩ZIP文件,而且对于包含中文文件名的情况,它提供了良好的支持。在实际开发中,理解并熟练运用这类工具可以极大地...
Ant是一个开源的、跨平台的Java项目构建工具,它通过XML配置文件(如`build.xml`)定义任务,这些任务可以是编译源代码、创建JAR文件、运行测试、部署应用等。XML文件中包含了构建过程的步骤和依赖关系,使得构建...
下面我们将以一个例子来说明如何使用Ant解压ZIP文件: ```xml ``` 在这个例子中,`<unzip>`任务的`src`属性指定了要解压的ZIP文件路径,而`dest`属性则指定了解压后文件的目标位置。运行`ant unzip-file`...
一个普通java程序用ant打包的列子,完整的,里面采用的是eclipse自带的编译插件进行的打包,需要结合eclipse中的插件一起使用
要使用这个工具包,你需要先解压,然后将`bin`目录添加到系统路径中,这样就可以在命令行中直接运行`ant`命令了。 在实际开发中,ANT被广泛应用于Java项目的构建过程,从简单的编译、打包,到复杂的部署、测试,都...
Apache Ant的版本`apache-ant-1.8.2-bin`包含了Ant的二进制分发包,其中包含了Ant的可执行文件和必要的库文件,可以直接解压使用。 总之,Java的Ant打包工具是项目自动化构建的利器,通过灵活的配置和强大的功能,...
至于“ant-1.9.7压缩资源包”,这通常会包含Ant的1.9.7版本的所有必需文件,包括JAR包和其他必要的文档、库和示例。这些资源可以帮助开发者在项目中快速集成和使用Ant,进行文件和文件夹的压缩操作。 总的来说,Ant...
本篇文章将深入探讨如何利用Ant实现ZIP压缩与解压的功能。Ant是基于Java的,它通过XML描述构建过程,使得项目构建过程更加标准化和可重复。 Ant本身并不直接支持ZIP操作,但可以通过内置的` zipfileset `和`unzip`...
3. **定义任务(Tasks)**:Ant通过任务来执行具体的操作,例如`javac`用于编译Java源代码,`copy`用于复制文件,`jar`用于创建JAR包,`war`则用于打包Web应用。 4. **Web应用结构**:在打包Web应用时,理解标准的...
`Java压缩zip示例.txt`文件则可能是关于如何在Java中使用标准`java.util.zip`包进行压缩操作的示例代码。这个包提供了`ZipOutputStream`类,可以用来将多个文件写入ZIP流,从而创建ZIP文件。通常,我们会遍历要压缩...
Ant能够处理编译Java源代码、生成JAR或WAR包、清理构建目录等任务。在myEclipse中,用户可以通过内置的Ant支持来创建和运行Ant构建脚本,这样可以提高开发效率,确保构建的一致性和可重复性。 标签“ant 蚂蚁配置”...
标题中的“ant打包java project为jar”指的是使用Apache Ant工具将Java项目打包成JAR(Java Archive)文件的过程。Ant是Java开发中的一个构建工具,它以XML格式定义任务,可以自动化编译、测试、打包等流程。在这个...
在本场景中,我们将关注如何利用Ant来批量压缩JavaScript(js)和CSS(css)文件,以优化网页加载速度并减小文件体积。这主要涉及到两个知识点:Ant脚本编写和文件压缩技术。 首先,让我们了解一下Ant。Ant是基于...
使用ant.jar工具通过java程序来解压tar包文件,支持中文文件名。
4. **资源处理**:Ant可以处理非Java文件,如图片、配置文件等,使用`<copy>`任务将它们复制到目标目录。 5. **打包JAR**:使用`<jar>`任务创建JAR文件,可以包含类文件、资源文件和MANIFEST.MF。 6. **定制规则**:...
8. **插件扩展**:Ant的强大之处在于其丰富的插件系统,通过引入额外的Ant任务,可以执行更复杂的操作,如部署到应用服务器、压缩或解压缩文件等。 9. **跨平台**:由于Ant是用Java编写的,因此它可以跨平台运行,...