Android zip文件压缩与解压
Android开发中偶尔需要用到zip文件的压缩与解压,正好公司项目需要用到,趁此机会特意总结了下,分享给大家,也是对我学习Android的记录。
zip压缩
Android中的zip压缩主要用到两个类:ZipEntry,ZipOutputStream,ZipEntry类用于保存一些被压缩文件的信息,如文件名、修改时间等等,部分源码如下:
class ZipEntry implements ZipConstants, Cloneable {
String name; // entry name
long time = -1; // modification time (in DOS time)
long crc = -1; // crc-32 of entry data
long size = -1; // uncompressed size of entry data
long csize = -1; // compressed size of entry data
int method = -1; // compression method
int flag = 0; // general purpose flag
byte[] extra; // optional extra field data for entry
String comment; // optional comment string for entry
// Android-changed: Add dataOffset for internal use.
long dataOffset;
而ZipOutputStream是目标zip文件的输出流。zip压缩一共分为三步:
- 获取相应的ZipOutputStream;
- 判断是否是文件夹
(1)是:递归;
(2)否:根据文件路径、文件名等获取相应的ZipEntry,然后将该文件写入ZipOutputStream;
-
关闭相应的输出流;
/** * 压缩文件 * @param srcFile 待压缩的源文件 * @param rootPath 源文件的根路径 * @param zos Zip输出流 * @param comment 备注 * @return 压缩成功返回true * @throws IOException */ private static boolean zipFile(final File srcFile,String rootPath,final ZipOutputStream zos,final String comment) throws IOException { rootPath = rootPath + (isSpace(rootPath) ? "" : File.separator) + srcFile.getName(); if (srcFile.isDirectory()) { File[] fileList = srcFile.listFiles(); if (fileList == null