java解压缩zip
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class MyZip {
private void zip(String zipFileName, File inputFile)throws Exception{
ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipFileName));
zip(out, inputFile, " ");
System.out.println("压缩中……");
out.close();
}
private void zip(ZipOutputStream out, File f, String base)throws Exception {
if (f.isDirectory()) {
File[]fl = f.listFiles();//获取路径数组
if (base.length() != 0) {
out.putNextEntry(new ZipEntry(base + "/"));//写入此目录
}
for (int i = 0; i < fl.length; i++) {
zip(out, fl[i], base + fl[i]);//循环遍历数组中元素
}
}else {
out.putNextEntry(new ZipEntry(base));
FileInputStream fis = new FileInputStream(f);
int b;
System.out.println(base);
while ((b = fis.read()) != -1) {
out.write(b);
}
fis.close();
}
}
public static void main(String[] args) {
MyZip book = new MyZip();
try {
book.zip("src/chapter15/hallo.zip", new File("src"));
} catch (Exception e) {
e.printStackTrace();
}
}
}
///
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.zip.ZipInputStream;
public class Decompressing {
public static void main(String[] args) {
//当前的压缩文件
File file = new File("src/change/版本1.20e.zip");
ZipInputStream zin;
try {
//创建压缩文件对象
ZipFile zipFile = new ZipFile(file);
//实例化对象,指明要进行解压的文件
zin = new ZipInputStream(new FileInputStream(file));
//跳过根目录,获取下一个ZipEntry
ZipEntry entry = zin.getNextEntry();
//如果entry不为空,并且不在同一目录下
while (((entry = zin.getNextEntry()) != null) && !entry.isDirectory()) {
//解压出的文件路径
File tmp = new File("src/" + entry.getName());
//如果该文件不存在
if (!tmp.exists()) {
//创建文件父类文件夹路径
tmp.getParentFile().mkdirs();
//将文件目录中的文件放入输出流
OutputStream os = new FileOutputStream(tmp);
//用输入流读取压缩文件中制定目录中的文件
InputStream is = zipFile.getInputStream(entry);
int count = 0;
//如果有输入流可以读取到数值
while ((count = is.read()) != -1) {
//输出流写入
os.write(count);
}
os.close();
is.close();
}
zin.closeEntry();
System.out.println(entry.getName() + " 解压成功!");
}
zin.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}