手记

文件操作之——将assets下压缩包解压到本地指定文件夹

//本地路径

File sd = Environment.getExternalStorageDirectory();

String outputDirectory = sd.getPath() + "/WDWK/Html";

//方法调用

Utils.unZip(this, "html.zip", outputDirectory,true);


//方法实现

/**

 * 解压assets的zip压缩文件到指定目录

 * 

 * @param context上下文对象

 * @param assetName压缩文件名

 * @param outputDirectory输出目录

 * @param isReWrite是否覆盖

 * @throws IOException

 */

public static boolean unZip(Context context, String assetName,

String outputDirectory, boolean isReWrite) throws IOException {

boolean isOk = false;

// 创建解压目标目录

File file = new File(outputDirectory);

// 如果目标目录不存在,则创建

if (!file.exists()) {

file.mkdirs();

}

// 打开压缩文件

InputStream inputStream = context.getAssets().open(assetName);

ZipInputStream zipInputStream = new ZipInputStream(inputStream);

// 读取一个进入点

ZipEntry zipEntry = zipInputStream.getNextEntry();

// 使用1Mbuffer

byte[] buffer = new byte[1024 * 1024];

// 解压时字节计数

int count = 0;

// 如果进入点为空说明已经遍历完所有压缩包中文件和目录

while (zipEntry != null) {

// 如果是一个目录

if (zipEntry.isDirectory()) {

file = new File(outputDirectory + File.separator

+ zipEntry.getName());

// 文件需要覆盖或者是文件不存在

if (isReWrite || !file.exists()) {

file.mkdir();

}

} else {

// 如果是文件

file = new File(outputDirectory + File.separator

+ zipEntry.getName());

// 文件需要覆盖或者文件不存在,则解压文件

if (isReWrite || !file.exists()) {

file.createNewFile();

FileOutputStream fileOutputStream = new FileOutputStream(

file);

while ((count = zipInputStream.read(buffer)) > 0) {

fileOutputStream.write(buffer, 0, count);

}

fileOutputStream.close();

}

}

// 定位到下一个文件入口

zipEntry = zipInputStream.getNextEntry();

}

zipInputStream.close();

return isOk = true;

}

原文链接:http://www.apkbus.com/blog-19685-61627.html

0人推荐
随时随地看视频
慕课网APP