Java_22 ZIP压缩输入/输出流

来源:互联网 发布:nginx zookeeper 区别 编辑:程序博客网 时间:2024/06/07 08:18

1.压缩文件

利用ZipOutoutStream类对象,可将文件压缩为。zip文件。ZipOutputStream类的构造函数如下:ZipOutputStream(OutputStream out);ZipOutputStream类的常用方法:putNextEntry(ZipEntry e):开始写一个新的ZipEntry,并且将流内的位置移至此entry所指数据的开头write(byte[] b,int off,int len):将字节数组写入当前ZIP条目数据finish():完成写入ZIP输出流的内容,无须关闭它所配合的OutputStreamsetComment(String comment):可设置此ZIP文件的注释文字

2.解压ZIP文件

ZipInputStream类可读取ZIP压缩格式的文件,包括对已压缩和未压缩条目的支持(entry)。ZipInputStream类的构造函数:ZipInputStream(InputStream in)ZipInputStream类的常用方法:read(byte[]b, int off,int len):读取目标b数组内off偏移量的位置,长度是len字节available():判断是否已读完目前entry所指定的目标。读完返回0;否则返回1closeEntry():关闭当前ZIP条目并定位流以读取下一个条目skip(long n):跳过当前ZIP条目中指定的字节数getNextEntry():读取下一个ZipEntry,并将流内的位置移至entry所指数据的开头createZipEntry(String name):以指定的name参数新建一个ZipEntry对象

3.压缩所有子文件夹

public class 压缩 {    private void zipFile(List<String>path,File targetZipFile,String base) throws IOException{    //根据给定的targetZipFile创建文件输出流对象        FileOutputStream fos= new FileOutputStream(targetZipFile);        ZipOutputStream zos = new ZipOutputStream(fos);//利用文件输出流对象创建Zip输出流对象        byte[] buffer=new byte[1024];        for(String string:path){//遍历所有要压缩的文件            File currentFile = new File(string);            //利用要压缩文件的相对路径创建ZipEntry对象            ZipEntry entry = new ZipEntry(string.substring(base.length()+1,string.length()));            FileInputStream fis =new FileInputStream(currentFile);            zos.putNextEntry(entry);            int read=0;            while((read=fis.read(buffer))!=-1){//将数据写入Zip输出流中                zos.write(buffer,0,read);            }            zos.closeEntry();//关闭ZipEntry对象            fis.close();        }        zos.close();//释放资源        fos.close();    }
原创粉丝点击