代码如下:
zip压缩:
//压缩文件并存放到指定目录
private void zipFile(String fileFrom, String fileTo) {
try {
FileInputStream in = new FileInputStream(fileFrom);
FileOutputStream out = new FileOutputStream(fileTo);
ZipOutputStream zipOut = new ZipOutputStream(out);
ZipEntry entry = new ZipEntry(fileFrom);
zipOut.putNextEntry(entry);
int nNumber;
byte[] buffer = new byte[512];
while ((nNumber = in.read(buffer)) != -1){
zipOut.write(buffer, 0, nNumber);
countBuffer++;
}
zipOut.close();
out.close();
in.close();
handlerCopy.sendEmptyMessage(2);
} catch (IOException e) {
handlerCopy.sendEmptyMessage(3);
System.out.println(e);
}
}
zip解压缩:
private static void Unzip(String zipFile, String targetDir) {
int BUFFER = 4096; //这里缓冲区我们使用4KB,
String strEntry; //保存每个zip的条目名称
try {
BufferedOutputStream dest = null; //缓冲输出流
FileInputStream fis = new FileInputStream(zipFile);
ZipInputStream zis = new ZipInputStream(new BufferedInputStream(fis));
ZipEntry entry; //每个zip条目的实例
while ((entry = zis.getNextEntry()) != null) {
try {
int count;
byte data[] = new byte[BUFFER];
strEntry = entry.getName();
File entryFile = new File(targetDir + strEntry);
File entryDir = new File(entryFile.getParent());
if (!entryDir.exists()) {
entryDir.mkdirs();
}
FileOutputStream fos = new FileOutputStream(entryFile);
dest = new BufferedOutputStream(fos, BUFFER);
while ((count = zis.read(data, 0, BUFFER)) != -1) {
dest.write(data, 0, count);
}
dest.flush();
dest.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
zis.close();
} catch (Exception cwj) {
cwj.printStackTrace();
}
}