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");
}
}
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");
}
}
相关文章推荐
- Java压缩和解压文件工具类ZipUtil
- 使用Java对文件或文件夹的压缩, 解压, 加密和解密
- java中对文件压缩与解压
- Java----文件的压缩与解压
- Java解压和压缩带密码的zip文件
- Java操作Ant压缩和解压文件及批量打包Anroid应用
- Java 解压压缩文件,springMVC 接收压缩文件
- Java文件压缩与解压之java.util.zip的使用
- Java课程设计笔记-用org.apache.tools.zip中的类压缩/解压zip文件
- 第十篇:JAVA文件压缩、解压
- java解压缩zip文件,java创建zip文件,java压缩文件,java解压文件,用到ant.jar解决汉字乱码
- Java小程序之哈夫曼树与文件压缩和解压缩(三)文件解压篇
- Java文件解压与压缩
- Java文件的压缩和解压操作
- java实现HDFS上的压缩文件的解压
- java中不解压读取zip压缩文件
- java 解压,压缩文件夹
- JAVA高级【1.3】《Java核心技术2》流与文件-压缩与解压
- java实现的文件压缩和解压
- java解压缩zip文件,java创建zip文件,java压缩文件,java解压文件