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.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.zip.ZipInputStream;
public class ZipInputStreamTest {
public static final String zipName = "";
public static final String unpack_root = "D:\\unpackTest\\";
private static ZipFile zipFile;
public static void main(String args[]) throws IOException {
File file = new File(zipName);// 压缩文件
zipFile = new ZipFile(file);
ZipInputStream zipInputStream = new ZipInputStream(new FileInputStream(file));
ZipEntry zipEntry = null;
while ((zipEntry = zipInputStream.getNextEntry()) != null) {
String fileName = zipEntry.getName();
File temp = new File(unpack_root + fileName);
if (!temp.getParentFile().exists()) {
temp.getParentFile().mkdirs();
}
OutputStream os = new FileOutputStream(temp);
// 通过ZipFile的getInputStream方法拿到具体的ZipEntry的输入流
InputStream is = zipFile.getInputStream(zipEntry);
int len = 0;
while ((len = is.read()) != -1) {
os.write(len);
}
os.close();
is.close();
}
zipInputStream.close();
}
}
2.// 解压缩
import android.util.Log;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
/**
* 解压文件
*/
public class Unpacker {
private static final String TAG = "Unpacker";
private final String zip;
private final String loc;
public Unpacker(String zipFile, String location) {
zip = zipFile;
loc = location;
dirChecker(""); // 创建目录
}
public void unzip() {
try {
ZipInputStream zin = new ZipInputStream(new FileInputStream(zip));
ZipEntry ze = null;
while ((ze = zin.getNextEntry()) != null) {
Log.v(TAG, "Unzipping " + ze.getName());
if (ze.isDirectory()) {
dirChecker(ze.getName());
} else {
FileOutputStream fout = new FileOutputStream(loc + ze.getName());
byte[] buffer = new byte[4096];
for (int c = zin.read(buffer); c != -1; c = zin.read(buffer)) {
fout.write(buffer, 0, c);
}
zin.closeEntry();
fout.close();
}
}
zin.close();
} catch (Exception e) {
Log.e(TAG, "unzip", e);
}
}
private void dirChecker(String dir) {
File f = new File(loc + dir);
if (!f.isDirectory()) {
f.mkdirs();
}
}
}