与文件压缩与解压相关的类在java.util.zip包下

实例

//文件压缩
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

public class ZipOutputStreamDemo2{
    public static void main(String[] args)throws IOException{
        // 要被压缩的文件夹
        File file = new File("d:" +File.separator + "temp");
        File zipFile = new File("d:"+ File.separator + "zipFile.zip");
        InputStream input = null;
        ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream(zipFile));
        zipOut.setComment("hello");
        if(file.isDirectory()){
            File[] files = file.listFiles();
            for(int i = 0; i < files.length;++i){
                input = new FileInputStream(files[i]);
                zipOut.putNextEntry(new ZipEntry(file.getName() + File.separator +files[i].getName()));
                int temp = 0;
                while((temp = input.read()) !=-1){
                    zipOut.write(temp);
                }
                input.close();
            }
        }
        zipOut.close();
    }
}

//解压文件
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.zip.ZipInputStream;

public class ZipFileDemo3{
    public static void main(String[] args)throws IOException{
        File file = new File("d:" +File.separator + "zipFile.zip");
        File outFile = null;
        ZipFile zipFile = new ZipFile(file);
        ZipInputStream zipInput = new ZipInputStream(new FileInputStream(file));
        ZipEntry entry = null;
        InputStream input = null;
        OutputStream output = null;
        while((entry = zipInput.getNextEntry())!= null){
            System.out.println("解压缩" +entry.getName() + "文件");
            outFile = new File("d:" +File.separator + entry.getName());
            if(!outFile.getParentFile().exists()){
               outFile.getParentFile().mkdir();
            }
            if(!outFile.exists()){
                outFile.createNewFile();
            }
            input =zipFile.getInputStream(entry);
            output = new FileOutputStream(outFile);
            int temp = 0;
            while((temp = input.read()) != -1){
                output.write(temp);
            }
            input.close();
            output.close();
        }
    }
}

ZipFile

此类用于从 ZIP 文件读取条目。

构造方法

ZipFile(Filefile)

打开供阅读的 ZIP 文件,由指定的 File 对象给出。

ZipFile(Filefile, int mode)

打开新的 ZipFile 以使用指定模式从指定File 对象读取。

ZipFile(Stringname)

打开 ZIP 文件进行阅读。

主要方法

public ZipEntry getEntry(String name)返回指定名称的 ZIP 文件条目;如果未找到,则返回 null。

publicInputStream getInputStream(ZipEntryentry)

throws IOException返回输入流以读取指定ZIP 文件条目的内容。

关闭此 ZIP 文件将依次关闭调用此方法返回的所有输入流。

public String getName()返回 ZIP 文件的路径名。

publicEnumeration<? extends ZipEntry> entries()返回 ZIP 文件条目的枚举。

public int size()返回 ZIP 文件中的条目数。

public void close()

throws IOException关闭 ZIP 文件。

ZipEntry

此类用于表示 ZIP 文件条目。

构造方法

ZipEntry(Stringname)

使用指定名称创建新的 ZIP 条目。

ZipEntry(ZipEntrye)

使用从指定 ZIP 条目获取的字段创建新的ZIP 条目。

主要方法

public String getName()返回条目名称。

public void setTime(long time)设置条目的修改时间。

public long getTime()返回条目的修改时间;如果未指定,则返回-1。

public void setSize(long size)设置条目数据的未压缩大小。

public long getSize()返回条目数据的未压缩大小;如果未知,则返回-1。

public void setMethod(int method)设置条目的压缩方法。

public int getMethod()返回条目的压缩方法;如果未指定,则返回 -1。

public void setComment(String comment)为条目设置可选的注释字符串。

public String getComment()返回条目的注释字符串;如果没有,则返回 null。

public boolean isDirectory()如果为目录条目,则返回true。目录条目定义为其名称以 '/' 结尾的条目。

InflaterInputStream extends FilterInputStream

此类为解压缩"deflate" 压缩格式的数据实现流过滤器。它还用作其他解压缩过滤器(如 GZIPInputStream)的基础。

内部变量

protected  byte[] buf

用于解压缩的输入缓冲区。

protected  Inflater inf

流的解压缩器。

protected  int len

输入缓冲区的长度。

构造方法

InflaterInputStream(InputStreamin)

使用默认解压缩器和缓冲区大小创建一个新输入流。

InflaterInputStream(InputStreamin, Inflater inf)

创建一个带有指定解压缩器和默认缓冲区大小的新输入流。

InflaterInputStream(InputStreamin, Inflater inf, int size)

使用指定解压缩器和缓冲区大小创建一个新输入流。

ZipInputStream extendsInflaterInputStream

此类为读取 ZIP 文件格式的文件实现输入流过滤器。包括对已压缩和未压缩条目的支持。

构造方法

publicZipInputStream(InputStream in)创建新的 ZIP 输入流。

主要方法

public ZipEntry getNextEntry()

throws IOException读取下一个 ZIP 文件条目并将流定位到该条目数据的开始处。

public void closeEntry()

throws IOException关闭当前 ZIP 条目并定位流以读取下一个条目。

protectedZipEntry createZipEntry(String name)为指定条目名称创建一个新的ZipEntry 对象。

GZIPInputStream extendsInflaterInputStream

此类为读取 GZIP 文件格式的压缩数据实现流过滤器。

构造方法

GZIPInputStream(InputStreamin)

使用默认缓冲区大小创建新的输入流。

GZIPInputStream(InputStreamin, int size)

使用指定缓冲区大小创建新的输入流。

主要方法

public intread(byte[] buf, int off, int len)

throws IOException将未压缩数据读入字节数组。如果 len 不为零,则在可以解压缩某些输入之前,此方法将处于阻塞状态;否则,不读取字节并且返回 0。

DeflaterOutputStream extends FilterOutputStream

此类为使用"deflate" 压缩格式压缩数据实现输出流过滤器。它还用作其他类型的压缩过滤器(如 GZIPOutputStream)的基础。

内部变量

protected  byte[] buf

写入压缩数据的输出缓冲区。

protected  Deflater def

此流的压缩器。

构造方法

DeflaterOutputStream(OutputStreamout)

使用默认压缩器和缓冲区大小创建一个新输出流。

DeflaterOutputStream(OutputStreamout, Deflater def)

使用指定压缩器和默认缓冲区大小创建一个新输出流。

DeflaterOutputStream(OutputStreamout, Deflater def, int size)

使用指定压缩器和缓冲区大小创建一个新输出流。

主要方法

protected voiddeflate()

throws IOException将下一个压缩数据块写入输出流。

ZipOutputStream extendsDeflaterOutputStream

此类为以 ZIP 文件格式写入文件实现输出流过滤器。包括对已压缩和未压缩条目的支持。

构造方法

ZipOutputStream(OutputStreamout)

创建新的 ZIP 输出流。

主要方法

public void setComment(String comment)设置 ZIP 文件注释。

public void setMethod(int method)设置用于后续条目的默认压缩方法。只要没有为单个 ZIP 文件条目指定压缩方法,并且其初始设置为 DEFLATED 时,就使用此默认值。

public void setLevel(int level)为后续的 DEFLATED条目设置压缩级别。默认设置是 DEFAULT_COMPRESSION。level可取值0-9。

public void putNextEntry(ZipEntry e)

throws IOException开始写入新的 ZIP 文件条目并将流定位到条目数据的开始处。如果仍处于活动状态,则关闭当前条目。如果没有为条目指定压缩方法,则使用默认的压缩方法;如果没有为条目设置修改时间,则使用当前时间。

public void closeEntry()

throws IOException关闭当前 ZIP 条目并定位流以写入下一个条目。

GZIPOutputStream extendsDeflaterOutputStream

此类为使用 GZIP 文件格式写入压缩数据实现流过滤器。

构造方法

GZIPOutputStream(OutputStreamout)

使用默认缓冲区大小创建新的输出流。

GZIPOutputStream(OutputStreamout, int size)

使用指定缓冲区大小创建新的输出流。

主要方法

public void write(byte[] buf, int off, int len)

throws IOException将字节数组写入压缩输出流。在写入所有字节前,此方法将阻塞。

public void finish()

throws IOException完成将压缩数据写入输出流的操作,无需关闭底层流。对同一输出流相继应用多个过滤器时使用此方法。

I/O操作之文件压缩与解压的更多相关文章

  1. Linux之文件压缩与解压

    文件压缩与解压 1.tar命令 tar命令可以为Linux的文件和目录创建档案. 利用tar,可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件.tar最初被用来 ...

  2. 文件压缩、解压工具类。文件压缩格式为zip

    package com.JUtils.file; import java.io.BufferedOutputStream; import java.io.File; import java.io.Fi ...

  3. 文件压缩跟解压(本地&Linux服务器)

    远程解压需要的jar包: <dependency> <groupId>commons-net</groupId> <artifactId>commons ...

  4. CSharp tar类型文件压缩与解压

    最近闲暇时间开始写点通用基础类在写到tar类型文件压缩与解压时遇到点问题 压缩用的类库我是下载的 SharpZipLib_0860版本 先上代码 加压核心 /// <summary> // ...

  5. linux下文件压缩与解压操作

    对于刚刚接触Linux的人来说,一定会给Linux下一大堆各式各样的文件名给搞晕.别个不说,单单就压缩文件为例,我们知道在Windows下最常见的压缩文件就只有两种,一是,zip,另一个是.rap.可 ...

  6. Java实现文件压缩与解压

    Java实现ZIP的解压与压缩功能基本都是使用了Java的多肽和递归技术,可以对单个文件和任意级联文件夹进行压缩和解压,对于一些初学者来说是个很不错的实例.(转载自http://www.puiedu. ...

  7. Java实现文件压缩与解压[zip格式,gzip格式]

    Java实现ZIP的解压与压缩功能基本都是使用了Java的多肽和递归技术,可以对单个文件和任意级联文件夹进行压缩和解压,对于一些初学者来说是个很不错的实例. zip扮演着归档和压缩两个角色:gzip并 ...

  8. 16 Linux系统的文件压缩、解压与归档

    这一节的内容,我们详细介绍下Linux的文件压缩.解压缩与文件归档的内容,也就是tar.gzip.bzip2.xz等命令的内容: 压缩(compress)与解压缩(uncompress) Linux系 ...

  9. 实现asp.net的文件压缩、解压、下载

    很早前就想做文件的解压.压缩.下载 了,不过一直没时间,现在项目做完了,今天弄了下.不过解压,压缩的方法还是看的网上的,嘻嘻~~不过我把它们综合了一下哦.呵呵~~ 1.先要从网上下载一个icsharp ...

随机推荐

  1. poj 3904(莫比乌斯反演)

    POJ 3904 题意: 从n个数中选择4个数使他们的GCD = 1,求总共有多少种方法 Sample Input 4 2 3 4 5 4 2 4 6 8 7 2 3 4 5 7 6 8 Sample ...

  2. 存储单位的换算(KB, MB, GB)

    关于存储单位的换算,大家一般会想到下面的换算方法. 1GB=1024MB 1MB=1024KB 1kb=1024字节 但实际生活中,这种换算方法并不准确. 例如在商家生产销售的硬盘, U盘中就不是这样 ...

  3. C语言程序设计预报作业

    1. 阅读邹欣老师的博客--师生关系,针对文中的几种师生关系谈谈你的看法,你期望的师生关系是什么样的? 答:万物都是变化的,师生关系也一样.小学中学把老师看作春蚕,蜡烛的的比喻到了大学显然行不通了.大 ...

  4. PostgreSQL 中如何实现group_concat

    之前在MySQL中使用group_concat,觉得超级好用. 今天在PostgreSQL需要用到这样的场景,就去学习了一下. 在PostgreSQL中提供了arr_agg的函数来实现聚合,不过返回的 ...

  5. spring AOP的两种配置方式

    连接点(JoinPoint) ,就是spring允许你是通知(Advice)的地方,那可就真多了,基本每个方法的前.后(两者都有也行),或抛出异常是时都可以是连接点,spring只支持方法连接点.其他 ...

  6. c# error

    部署iis c# 连sqlserver 用IIS发布之后,网页出错.提示为:异常详细信息: System.Data.SqlClient.SqlException: 用户 'NT AUTHORITY\I ...

  7. 02 基础设施/Gitlab - DevOps之路

    基础设施/Gitlab - DevOps之路 文章Github地址,欢迎start:https://github.com/li-keli/DevOps-WiKi 源代码管理器选用Gitlab,新版(2 ...

  8. 验证码识别之w3cschool字符图片验证码(easy级别)

    起因: 最近在练习解析验证码,看到了这个网站的验证码比较简单,于是就拿来解析一下攒攒经验值,并无任何冒犯之意... 验证码所在网页: https://www.w3cschool.cn/checkmph ...

  9. Docker 镜像

    Docker 镜像就是一个只读的模板. 例如:一个镜像可以包含一个完整的 ubuntu 操作系统环境,里面仅安装了 Apache 或用户需要的其它应用程序. 镜像可以用来创建 Docker 容器. D ...

  10. VirtualBox: How to config higher screen resolution

    Issue: Default Screen Resolution in Virtualbox instance is 800*600 which might be too small for gene ...