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();
}
}
}
分享到:
相关推荐
### JAVA解压ZIP多层目录文件(需ant.jar) #### 概述 本文将详细介绍一个Java方法,该方法用于解压包含多层目录结构的ZIP文件,并能够支持中文文件名。这种方法利用了Apache Ant库中的`org.apache.tools.zip....
Java操作Zip文件主要涉及到对文件和目录的压缩与解压缩,以及在必要时对压缩文件进行加密处理。这里我们重点讨论使用两个库:`zip4j`和`Apache Ant`来实现这些功能。 1. **zip4j库**:`zip4j-1.3.2.jar`是一个用...
在使用Java对ZIP压缩文件进行解压的方式中有两种,一种是使用apache提供的ant.jar工具包,但是如果ZIP文件中含有中文名称的文件,在解压后,文件名将出现乱码,另一种是使用Java自身JDK中java.util.zip包下工具类,...
zip,然后下载删除源文件与压缩文件。 3、可以指定文件都为最后生成为zip文件下载,且删除源文件。 1、压缩文件或者目录(只是压缩不删除):zipFileOrDirectory 2、程序自动判断如果是文件那么就是源文件下载,...
这段代码实现了将指定路径下的文件或文件夹压缩成ZIP文件的功能。关键步骤包括: - 检查并创建目标目录。 - 设置编码格式。 - 遍历文件夹并将每个文件加入ZIP文件。 - 关闭所有打开的流。 #### 五、文件解压流程 ...
java 压缩和解压 demo 解决中文乱码 这是本人做好的一个关于java压缩、解压缩文件或文件夹的demo,解决了中文乱码的问题,可以压缩或解压缩嵌套文件夹。一个ZipHelper + ant.jar轻松解决^_^,希望可以帮助到大家!具体...
在这个项目中,使用了Apache Ant的jar包(apache-ant-1.8.2.jar),它是一个强大的构建工具,也包含了文件操作和压缩功能。Apache Ant的`ZipTask`可以用来创建、更新或提取ZIP文件,非常适合于批量压缩任务。要使用...
java ZIP和RAR 压缩包 目录结构。 1.ant.jar 解决java自带zip不能读取中文压缩包的问题; 2.需要安装WINRAR软件,以便解压rar文件,然后获取对应目录; 3.实现在线预览压缩包目录结构的功能;
"apache-ant-1.6.5-bin"文件夹内包含了所有运行Ant所需的文件,包括JAR包和必要的脚本。 - 在Windows上设置Ant通常涉及解压这个ZIP文件,设置ANT_HOME环境变量,并将bin目录添加到PATH环境变量中。 4. **使用Ant**...
在Java编程环境中,有时我们需要对文件进行压缩或解压缩操作,比如处理.jar(Java档案)或.zip(ZIP档案)文件。这些操作在软件开发、数据传输以及资源打包等场景中非常常见。本篇将深入讲解如何使用Java来解压.jar...
在Java编程中,有时我们需要对文件进行压缩和解压缩操作,比如在Android应用开发中,为了便于分发和存储,通常会将应用打包成ZIP或TAR格式的压缩包。虽然Java标准库提供了对ZIP等压缩格式的支持,但是面对包含中文...
2. 编译后的jar文件(如:lib/slabsj-1.6.jar),这是实际运行时需要引入到Java项目的类库,包含了所有必要的类和方法,用于与Memcached服务器通信。 3. 文档(docs目录),可能包括API文档、用户手册或开发者指南,...
2. `lib` 目录:存放Ant运行所需的JAR文件,这些库包含了Ant的核心功能和可能的扩展任务。 3. `LICENSE` 和 `NOTICE` 文件:包含了Apache软件基金会的许可证信息和版权声明。 4. `README` 文件:可能提供了关于如何...
【压缩包子文件的文件名称列表】虽然只给出了"新建文件夹",但通常在实际的Java作业压缩包中,会包含源代码文件(.java)、编译后的字节码文件(.class)、项目配置文件(如build.xml,如果是Ant项目)、测试用例...
一个我做好的java压缩/解压缩文件的demo,一个ZipHelper类+ant.jar包,解决了压缩或解压缩后中文乱码的问题!,可解压嵌套文件夹,用的过程只需new一个ZipHelper,调用该类方法即可,demo里有详细说明!^_^
通常,这种情况下解压缩后会得到一个包含源代码、库文件、文档、示例代码或其他相关资源的文件夹。在这个目录中,我们可以期待找到以下内容: 1. **源代码**:JavaSQLite的源代码,可能分为编译前的.java文件和编译...
解压缩后,会得到一个包含FitNesseRoot、README.txt、dotnet、license.txt、fitnesse.jar、run.bat和run.sh等文件的fitnesse文件夹。双击运行run.bat(Windows)或run.sh(Linux),默认监听80端口。如果该端口已被...
根据提供的文件信息,我们可以归纳出几个关键的知识点,这些知识点主要围绕着Java中的压缩与解压缩操作。下面将对这些知识点进行详细的阐述。 ### 1. Java中的ZIP压缩 #### 压缩基本原理 在Java中,可以利用`java....
2. **解压文件**:将下载的 ZIP 文件解压缩到期望的目录中。 3. **设置环境变量**:将 Ant 的 bin 目录添加到系统的 PATH 环境变量中,使得可以从命令行任意位置调用 Ant 命令。 4. **验证安装**:打开命令提示符或...
1. **解压Ant和bb-ant-tool** - 将下载好的Ant和bb-ant-tool解压缩到任意位置。这一步是为了准备好构建环境。 2. **修改`build.xml`文件** - 打开项目的`build.xml`文件,该文件是Ant构建的核心配置文件,其中...