AndroidZip格式压缩和解压缩_簡簡單單 java解压缩zip

package com.zipUtil;
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 java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.zip.ZipOutputStream;


public class ZipUtil {

public static void zip(String src, String dest)throws IOException {
//提供了一个数据项压缩成一个ZIP归档输出流
ZipOutputStream out =null;
try {

File outFile= new File(dest);//源文件或者目录
FilefileOrDirectory = new File(src);//压缩文件路径
out = newZipOutputStream(new FileOutputStream(outFile));
//如果此文件是一个文件,否则为false。
if(fileOrDirectory.isFile()) {
zipFileOrDirectory(out,fileOrDirectory, "");
} else{
//返回一个文件或空阵列。
File[]entries = fileOrDirectory.listFiles();
for(int i = 0; i < entries.length; i++) {
//递归压缩,更新curPaths
zipFileOrDirectory(out,entries[i], "");
}
}
} catch (IOException ex){
ex.printStackTrace();
} finally {
//关闭输出流
if (out !=null) {
try{
out.close();
}catch (IOException ex) {
ex.printStackTrace();
}
}
}
}


private static voidzipFileOrDirectory(ZipOutputStream out,
FilefileOrDirectory, String curPath) throws IOException {
//从文件中读取字节的输入流
FileInputStream in =null;
try {
//如果此文件是一个目录,否则返回false。
if(!fileOrDirectory.isDirectory()) {
//压缩文件
byte[]buffer = new byte[4096];
intbytes_read;
in= new FileInputStream(fileOrDirectory);
//实例代表一个条目内的ZIP归档
ZipEntryentry = new ZipEntry(curPath
+fileOrDirectory.getName());
//条目的信息写入底层流
out.putNextEntry(entry);
while((bytes_read = in.read(buffer)) != -1) {
out.write(buffer,0, bytes_read);
}
out.closeEntry();
} else{
//压缩目录
File[]entries = fileOrDirectory.listFiles();
for(int i = 0; i < entries.length; i++) {
//递归压缩,更新curPaths
zipFileOrDirectory(out,entries[i], curPath
+fileOrDirectory.getName() + "/");
}
}
} catch (IOException ex){
ex.printStackTrace();
// throwex;
} finally {
if (in !=null) {
try{
in.close();
}catch (IOException ex) {
ex.printStackTrace();
}
}
}
}


@SuppressWarnings("unchecked")
public static void unzip(String zipFileName,String outputDirectory)
throwsIOException {
ZipFile zipFile = null;
try {
zipFile = newZipFile(zipFileName);
Enumeration e= zipFile.entries();
ZipEntryzipEntry = null;
File dest =new File(outputDirectory);
dest.mkdirs();
while(e.hasMoreElements()) {
zipEntry= (ZipEntry) e.nextElement();
StringentryName = zipEntry.getName();
InputStreamin = null;
FileOutputStreamout = null;
try{
if(zipEntry.isDirectory()) {
Stringname = zipEntry.getName();
name= name.substring(0, name.length() - 1);

Filef = new File(outputDirectory + File.separator
+name);
f.mkdirs();
}else {
intindex = entryName.lastIndexOf("\");
if(index != -1) {
Filedf = new File(outputDirectory + File.separator
+entryName.substring(0, index));
df.mkdirs();
}
index= entryName.lastIndexOf("/");
if(index != -1) {
Filedf = new File(outputDirectory + File.separator
+entryName.substring(0, index));
df.mkdirs();
}
Filef = new File(outputDirectory + File.separator
+zipEntry.getName());
//f.createNewFile();
in= zipFile.getInputStream(zipEntry);
out= new FileOutputStream(f);

intc;
byte[]by = new byte[1024];

while((c = in.read(by)) != -1) {
out.write(by,0, c);
}
out.flush();
}
}catch (IOException ex) {
ex.printStackTrace();
thrownew IOException("解压失败:" + ex.toString());
}finally {
if(in != null) {
try{
in.close();
}catch (IOException ex) {
}
}
if(out != null) {
try{
out.close();
}catch (IOException ex) {
}
}
AndroidZip格式压缩和解压缩_簡簡單單 java解压缩zip
}
}
} catch (IOException ex){
ex.printStackTrace();
throw newIOException("解压失败:" + ex.toString());
} finally {
if (zipFile!= null) {
try{
zipFile.close();
}catch (IOException ex) {
}
}
}
}
}

Activity调用

packagecom.comc;

importjava.io.IOException;

importcom.zipUtil.ZipUtil;

importandroid.app.Activity;
import android.os.Bundle;

public class IZipActivityextends Activity {


@Override
public voidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
try {
ZipUtil.zip("/data/data/com.comc/databases","/data/data/com.comc/databases.zip");
ZipUtil.unzip("/data/data/com.comc/databases.zip","/data/data/com.comc/databases");
} catch (IOException e) {
e.printStackTrace();
}
}

}

  

爱华网本文地址 » http://www.aihuau.com/a/25101010/26264.html

更多阅读

WinRAR压缩文件被设了密怎么破解 winrar带密码压缩

WinRAR压缩文件被设了密怎么破解——简介有时候我们会从网上下载一些WinRAR格式的压缩文件,当进行解压缩时才发现被设置了解压密码,在这种情况下,我们难到就束手无策吗?当然不是,下面小编就给大家讲解一下如何破解WinRAR格式压缩文件的密

《植物精灵》图文全攻略(一) 能源小精灵图文攻略

游戏信息:中文名称:植物精灵英文名称:Botanicula游戏类型:AVG 冒险游戏资源格式:压缩包版本:简体中文完整硬盘版发行时间:2012年4月19日制作发行:Amanita Design地区:美国语言:简体中文,英文,日文《植物精灵》图文全攻略(

rar文件怎么打开 rar是什么文件

rar文件怎么打开——简介 很多刚接触电脑的小白用户都不知道rar文件怎么打开,其实这个问题还是很简单就可以解决的,就是安装一个支持解压缩rar文件格式的解压缩工具。Win7系统默认只支持打开.ZIP格式压缩文件,不支持.rar格式的压缩文件

关于日语当中ふ的发音 日语谢谢怎么发音

在網路上偶爾可以看到有人在問:「ふ」的發音到底是「hu」還是「fu」?之所以會出現這樣的問題,是因為有一些學日文的人發現「ふ」所對應的羅馬字包括「hu」和「fu」,而且他們把「hu」和「fu」當成了日文的發音記號了。事實上,「hu」和「fu

九转丹成 道教元婴

九轉丹成——《拷問經典》后記在道家的陰陽八卦學說中,九為陽數之極。陽極陰生,自然之理。如同“道生一、一生二、二生三、三生萬物”,一二三,在這兒并非數學上的簡單自然數;九,當然也不是數學上的簡單指代符號。但迷信而喜好附會的

声明:《AndroidZip格式压缩和解压缩_簡簡單單 java解压缩zip》为网友错把当饭囧分享!如侵犯到您的合法权益请联系我们删除