import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.zip.ZipOutputStream;
public class ZipFolder {
OutputStream out;
static ZipOutputStream zips;
static InputStream in;
private String dir;
public OutputStream getOut() {
return out;
}
public void setOut(OutputStream out) {
this.out = out;
}
public String getDir() {
return dir;
}
public void setDir(String dir) {
this.dir = dir;
}
public void zipfile(String file) {
try {
int len = 0;
byte[] buff = new byte[1024];
in = new FileInputStream(file);
zips.putNextEntry(new ZipEntry(file.substring(dir.length() + 2)));
while ((len = in.read(buff)) != -1) {
zips.write(buff, 0, len);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public void folder(String folder) {
File f = new File(folder);
File[] fw = f.listFiles();
for (int i = 0; i < fw.length; i++) {
if (fw[i].isDirectory()) {
System.out.println("|" + fw[i]);
folder(fw[i].toString());
} else {
System.out.println("| " + fw[i].toString());
zipfile(fw[i].toString());
}
}
}
// 压缩文件
private void zipIn(String fileIn,String zipOut) {
ZipFolder is = new ZipFolder();
OutputStream out1;
try {
out1 = new FileOutputStream(zipOut);
is.setOut(out1);
zips = new ZipOutputStream(is.getOut());
is.setDir(fileIn);
// 调用 folder
is.folder(fileIn);
zips.close();
in.close();
is.getOut().close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("| 压缩结束.... ");
}
private void UnZip(ZipFile zFile, String path) {
try {
// 获取压缩包中的每个文件
Enumeration enu = zFile.entries();
while (enu.hasMoreElements()) {
// 将文件路径放入zEntry
ZipEntry zEntry = (ZipEntry) enu.nextElement();
// 创建此文件路径的File对象
File file = new File(path + "//" + zEntry.getName());
// 如果文件夹不存在,则创建
File parentDir = new File(file.getParent());
if (!parentDir.exists()) {
parentDir.mkdirs();
}
// 解压文件
InputStream read = zFile.getInputStream(zEntry);
FileOutputStream write = new FileOutputStream(file.getPath());
int len = 0;
byte[] buff = new byte[1024];
while ((len = read.read(buff, 0, buff.length)) != -1) {
write.write(buff, 0, len);
}
write.close();
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
// 解压缩文件
public void zipOut(String zipIn,String fileOut) {
try {
// ZipFile 以使用指定模式从指定 File(path) 对象读取
ZipFile zip = new ZipFile(new File(zipIn));
UnZip(zip, fileOut);
zip.close();
} catch (Exception ex) {
ex.printStackTrace();
}
System.out.println(" 解压缩结束....");
}
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
ZipFolder zip = new ZipFolder();
// // 1.压缩
// zip.zipIn("E:\\Program Files", "E:\\files.zip");
// // 2.解压缩
// zip.zipOut("E:\\files.zip","e:\\321");
}
}
分享到:
相关推荐
压缩文件2,由于50兆上传限制,基于j2se 7.0 update21文档制作
J2SE6.0API 包括冷冬大雪大神以及英文原版,各取所需吧。
自已动手写的一个基于j2se标准、ftp协议实现的文件上传源代码。里边下载功能的代码也写好了。只是没有添加到界面上,想要的可以自已动手加进去 有什么好的意见也可提出来。
J2SE_API、J2SE_API、J2SE_API、J2SE_API、J2SE_API、J2SE_API、J2SE_API
里面的Pack是传送文件的数据包,PackType是传送文件的包类型
J2SE基础知识大全 J2SE基础知识大全 J2SE基础知识大全
J2SE基础源代码
J2SE课件J2SE课件J2SE课件J2SE课件J2SE课件J2SE课件
j2se1.5中文api
j2se doc 中文版 j2se doc 中文版 j2se doc 中文版 j2se doc 中文版
很好的j2se的API
J2SE桌面应用开发 J2SE桌面应用开发J2SE桌面应用开发 J2SE桌面应用开发 J2SE桌面应用开发
j2se api 中文版 j2se api 中文版 j2se api 中文版
J2SE 教程
zxing/zxing-j2se-1.7.jar包, 包含类 com.google.zxing.StringsResourceTranslator.class com.google.zxing.client.j2se.BufferedImageLuminanceSource.class ...
j2se是学好java的基础,其中必须掌握api文档的一些包
J2SE API CHM格式,第二个压缩文件,由于50兆上传限制
J2SE概述
本代码是一个简单的解压缩工具,其可以实现将文件压缩成压缩文件,也可解压缩(此功能与压缩类似,本人并没有完成)。其中实现了JList的添加图标的selection还实现了将文件夹中的所有文件压缩的递归算法。请尝试。...
J2SE面试题总汇,多年面试经验,J2SE系列面试题汇总,包你拿到OFFER