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解压缩zip包的工具类,内含ant.jar包,可以解决文件为中文的问题,大家随便看看
org.apache.tools.ant.taskdefs.Java org.apache.tools.ant.taskdefs.Move org.apache.tools.ant.taskdefs.Nice org.apache.tools.ant.taskdefs.Pack org.apache.tools.ant.taskdefs.Rmic org.apache.tools.ant...
ant.jar,ant-junit.jar,ant-launcher.jar,ant-trax.jar
java zip压缩和解压缩文件,附带ant.jar
axis-ant.jar,axis.jar
ant.jar ant.jar
ant.jarant.jarant.jarant.jar
Java压缩文件 Java压缩文件 Java压缩文件 Java压缩文件 Java压缩文件 ant.jar
ant.jar(处理ZIP的jar)。这是一个很好用的zipjar包,功能强大。
ant.jar 在java开发中用到,看到好多人要很多分,我就放了上去。只要1分,谢谢
ant.jar下载 Apache ant 自动构建。
ant.jar 压缩解压缩需要的包,在我博客里看到的可以再这里下载。
catalina-ant.jar
Apache ant.jar包
基于ant.jar的文件(夹)压缩解压工具,支持完整目录树压缩和就解压,支持编码设置
使用ant.jar工具通过java程序来解压tar包文件,支持中文文件名。
ant.jar包 java的工具包
经常写代码,常见的jar我简单做了下整理,希望能给大家有所帮助。包括:ant.jar dom4j-1.6.1.jar jxl.jar mail.jar mysql-connector-java-5.0.8-bin.jar pdfbox-0.7.3.jar poi-3.5-beta1.jar
完美支持解压zip文件多层文件解压,文件夹,文件,支持中文。