在一个android项目中使用到了zip进行文件的传输,可以大大减少存储空间和传输流量,于是就会涉及到zip文件的加压缩问题。下面将会详细介绍java原生的zip api。先来简单列举一下java中关于zip的api:
一、zip压缩
java通过 ZipOutputStream 对zip文件建立输出流,可以使用以下构造方法:
FileOutputStream fos = new FileOutputStream(outFile);
ZipOutputStream zos = new ZipOutputStream(fos);
建立了对zip文件的输出流之后,我们需要逐个写入需要压缩的文件,通过 ZipOutputStream 的 putNextEntry(ZipEntry e) 方法,可以在建立zip文件内建立需要写入的下一个文件的“入口”。
ZipEntry 可以调用其构造方法 ZipEntry(String name) 为要写入的文件制定名字name,该名字包含此文件相对于zip文件的子目录。
举例如下:
如果我们希望将t.txt文件打包到zip文件中,并且是打包到zip文件中的“dir”文件夹中,那么就需要指定其 ZipEntry 的构造方法的name为 “dir/t.txt”。如果是直接打包到zip文件的一级目录中,那么就只需要指定name为“t.txt”即可。
下面给出一段压缩某个文件到zip的代码:
ze = new ZipEntry(subPath);
zos.putNextEntry(ze);
bis = new BufferedInputStream(new FileInputStream(f));
while (bis.read(data, 0, byteLength) != -1) {