压缩文件其实就是将目标文件(targetFile)先压缩然后通过文件的读写操作读取目标文件(已经压缩)再将目标文件输出压缩文件(zipFile)
1、创建zip输出流与缓冲流,缓冲流传递zip输出流对象
2、判断targetFile是否为文件夹,如果是文件夹需要通过File类的listFiles方法获取文件夹中的每一个文件,其返回值是一个File数组
3、判断是否为空文件夹
空文件夹压缩操作固定写法:
zOut.putNextEntry(new ZipEntry(targetFileName+"/"));
(zOut:zip输出流对象;targetFileName:压缩文件名)
4、递归,targetFileName=targetFile.getName();
f.getName()是文件夹下每一个文件/文件夹的名称
递归结束的条件为目标文件不再是文件夹,然后执行下面的操作:
5、压缩文件
6、文件压缩好之后需要读写这个文件(targetFile)
①创建字节输入流,参数传递目标文件(targetFile),此时目标文件已经压缩
②可以通过int read()读写(返回值是每个数据的ASCII)
也可以通过缓冲数组读写int read(byte[] byte)(返回值是每次读取的有效字节数)
7、注意:缓冲流使用之后一定要刷新和关闭