您的位置:首页 > 编程语言 > Java开发

Java解压、压缩文件

2013-05-17 17:01 239 查看
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;

/*

* 该包在spring2.0里面有

*/

public class ConpressFile {

private static ConpressFile instance=new ConpressFile();

private ConpressFile(){}

public static ConpressFile getInstance(){

return instance;

}

public synchronized void zip(String tFilinputFileNameeName,String zipFileName) throws IOException {

zip(new File(tFilinputFileNameeName),zipFileName);

}

private synchronized void zip(File file, String zipFileName) throws IOException {

ZipOutputStream out=new ZipOutputStream(new FileOutputStream(zipFileName));

try {

zip(file,out,"");

} catch (RuntimeException e) {

e.printStackTrace();

}

finally{

out.close();

}

}

private synchronized void zip(File file, ZipOutputStream out, String string) throws IOException {

if(file.isDirectory()){

File[] files=file.listFiles();

out.putNextEntry(new ZipEntry(string+"/"));

string=string.length()==0?"":"/";

for (int i = 0; i < files.length; i++) {

zip(files[i],out,string+files[i].getName());

}

}else{

if(string.length()>0){

out.putNextEntry(new ZipEntry(string));

}else{

out.putNextEntry(new ZipEntry(file.getName()));

}

FileInputStream in=new FileInputStream(file);

try {

int c;

byte[] buf=new byte[1024];

while ((c=in.read(buf))!=-1) {

out.write(buf,0, c);

}

} catch (Exception e) {

e.printStackTrace();

}finally{

in.close();

}

}

}

public void unzip(String zipFileName,String dirFileName) throws IOException{

File file=new File(dirFileName);

if(!file.exists()){

file.mkdir();

}

ZipFile zipFile=new ZipFile(zipFileName);

Enumeration en=zipFile.getEntries();

ZipEntry zipEntry=null;

while (en.hasMoreElements()) {

zipEntry= (ZipEntry) en.nextElement();

if(zipEntry.isDirectory()){

String dirName=zipEntry.getName();

dirName=dirName.substring(0,dirName.length()-1);

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

f.mkdir();

}else{

File f=new File(file.getPath()+File.separator+zipEntry.getName());

f.createNewFile();

InputStream in=zipFile.getInputStream(zipEntry);

FileOutputStream out=new FileOutputStream(f);

try {

int c;

byte [] buf=new byte[1024];

while ((c=in.read(buf))!=-1) {

out.write(buf, 0, c);

}

} catch (RuntimeException e) {

e.printStackTrace();

}finally{

in.close();

out.close();

}

}

}

}

public static void main(String[] agrs) throws IOException{

ConpressFile conpressFile=ConpressFile.getInstance();

conpressFile.zip("D:\\unzip","am.zip");

conpressFile.unzip("am.zip","text");

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: