知识大全 Java数据压缩格式程序设计方法

Posted

篇首语:少年击剑更吹箫,剑气箫心一例消。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Java数据压缩格式程序设计方法相关的知识,希望对你有一定的参考价值。

Java数据压缩格式程序设计方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

   GZIP压缩格式简介    在JDK API中 同样定义了多种类型用于创建和解除GZIP压缩格式数据文件的通用对象和方法 用于基于JDK编写GZIP压缩数据管理程序     GZIP压缩格式是在Sun Solaris操作系统中广泛采用的压缩数据格式 由于在数据压缩过程中可以采用多种类型的压缩算法 因此 压缩文件的压缩比很高 另外 在创建的压缩文件中 定义了用于表述时间和文件属主的时戳(Time Stamp) 可以使文件方便地在网络中传输和交换     GZIP压缩数据文件由一系列的数字构成 而各数字对应如下描述压缩文件信息的字段     ID 缺省值 用于标识GZIP压缩格式     ID 缺省值 用于标识GZIP压缩格式     CM 采用的压缩方法 其值为 ~ 是保留值 标识采用 deflate 压缩方法     FLG 用于标识各占用位的标志     MTIME 记录了最近修改时间     XFL 用于标识采用压缩算法的选项     OS 定义了操作系统类型     XLEN 定义了附加信息段的长度     M 压缩文件说明信息     CRC 记录了CRC 算法采用的循环冗余校验值     上述信息完整描述了GZIP压缩格式数据 当然 基于JDK开发的压缩数据管理程序 不需要明确知道上述压缩数据定义格式 只需要创建相应的管理对象并调用这些对象中定义的方法即可      JDK API中ZIP压缩格式支持对象    GZIP压缩格式是在JDK API中定义支持的另外一种数据压缩格式 由上面介绍的GZIP格式数据压缩方法可知 GZIP压缩格式具有更大的压缩比 因此 在Unix操作系统中 这种类型的数据压缩形式的应用十分普及     与JDK API对ZIP压缩格式的支持不同 在JDK API中 只定义了GZIPInputStream和GZIPOutputStream两种类型的流(Stream)对象 用于在基于流的数据传输过程中实现数据压缩 这两个对象的继承定义结构如下所示         java lang Object    |    + java io InputStream    |    + java io FilterInputStream    |    + java util zip InflaterInputStream    |    + java util zip GZIPInputStream(java util zip GZIPOutputStream)        以采用GZIP格式进行数据输入处理GZIPInputStream对象为例 由上述对象的继承定义结构可以看出 该对象继承了InflaterInputStream流对象 需要说明的是 在ZIP压缩包中 定义了Inflater和Deflater两个对象 用于基于ZLIB压缩库实现多种格式的数据压缩和解压缩 因此 InflaterInputStream流对象的作用是采用ZLIB库作为数据压缩管理的引擎 而GZIPInputStream对象则进一步将流的数据加工进行细化 用于读取GZIP格式的压缩数据 同理 GZIPOutputStream对象用于创建GZIP格式的压缩数据文件 下面 将对两个对象的定义内容进行说明     ●GZIPInputStream    对象定义结构     java util zip GZIPInputStream    静态成员变量     protected CRC crc 用于说明采用的数据压缩算法为CRC     protected boolean eos 说明输入流对象结束读取输入数据     构造方法     GZIPInputStream(InputStream in) 采用默认的缓冲区字节数创建输入流对象     GZIPInputStream(InputStream in int size) 创建由整数类型变量size指定缓冲区字节数的输入流对象     成员方法     该对象只定义了如下两个成员方法     void close() 关闭输入流对象     int read(byte[] buf int off int len) 读取输入流的数据到buf字节数组中     ●GZIPOutputStream    对象定义结构     java util zip GZIPOutputStream    静态成员变量     protected CRC crc 用于说明采用的数据压缩算法为CRC     构造方法     GZIPOutputStream(OutputStream out) 采用默认的缓冲区字节数创建输出流对象     GZIPOutputStream(OutputStream out int size) 创建由整数类型变量size指定缓冲区字节数的输出流对象     成员方法     void close() 关闭输出流对象     void finish() 结束数据输出 但不关闭输出流对象     void write(byte[] buf int off int len) 将字节数组buf中的内容压缩输出到输出流对象中      创建GZIP压缩格式文件实例    经过前面对JDK API中创建GZIP压缩格式文件的相关对象的结构 成员方法定义形式的说明 读者一定会问如何应用这些对象和对象中定义的成员方法呢?请读者看下面的实例代码         //ZipDemo java    import java io *;     import java util zip *;     public class GZIPDemo          public static void main(String[] args)          if (args length != )          System out println("Usage:java GZIPDemo SourceFile DestnFile" + args length);     System exit( );          try          int number;     //打开需压缩文件作为文件输入流     FileInputStream fin = new FileInputStream(args[ ]);     //建立压缩文件输出流    FileOutputStream fout=new FileOutputStream(args[ ]);     //建立GZIP压缩输出流     GZIPOutputStream gzout=new GZIPOutputStream(fout);     //设定读入缓冲区尺寸    byte[] buf=new byte[ ];     while ((number = fin read(buf)) != )     gzout write(buf number);     gzout close();     fout close();     fin close();         catch(IOException e)          System out println(e);                       上面的程序用于将命令行中指定的文件SourceFile进行压缩 创建GZIP格式的压缩文件DestnFile     在该程序的实现代码中 首先创建用于进行文件输入和输出的FileInputStream和FileOutputStream对象 并以FileOutputStream对象实例为参数创建GZIPOutputStream对象实例 从而为创建GZIP格式压缩文件建立数据流基础     在随后的代码中 利用FileInputStream对象中定义的read方法 从源文件中读取待压缩文件的内容 同时利用GZIPOutputStream对象中定义的write方法将压缩后的数据写出到输出文件中 从而实现数据文件的GZIP格式压缩处理     在Java中创建GZIP格式压缩文件的方法很简单 并且利用WinZip WinRAR等类型的压缩管理软件均能够打开创建的GZIP格式的压缩文件 那么 如何利用JDK API中定义的对象将被压缩的文件解压缩呢?请读者看下一节的内容      GZIP格式文件解压缩实例    下面的程序用于将利用JDK API中定义对象的成员方法 将GZIP格式压缩文件进行解压缩 从而恢复压缩原始文件         //UnGZIPDemo java    import java io *;     import java util zip *;     public class UnGZIPDemo          public static void main(String[] args)          if (args length != )          System out println("Usage:java UnGZIPDemo GZIPFile DestnFile");     System exit( );          try          int number;    //建立GZIP压缩文件输入流     FileInputStream fin=new FileInputStream(args[ ]);     //建立GZIP解压工作流     GZIPInputStream gzin=new GZIPInputStream(fin);     //建立解压文件输出流     FileOutputStream fout=new FileOutputStream(args[ ]);     //设定读入缓冲区尺寸    byte[] buf=new byte[ ];     while ((nnumber=gzin read(buf buf length)) != )     fout write(buf nnumber);     gzin close();     fout close();     fin close();         catch(IOException e)          System out println(e);                       在GZIP格式压缩文件解压缩程序代码中 仍然首先创建FileInputStream和FileOutputStream对象 并基于创建的FileInputStream对象创建GZIPInputStream对象 在随后的代码中 调用GZIPInputStream对象中定义的read方法 在从压缩文件中读取数据内容并进行解压缩处理后 将解除压缩后的数据内容利用文件输出流对象进行输出 从而实现数据文件的解压缩处理      小 cha138/Article/program/Java/hx/201311/27034

相关参考

知识大全 java 解析json格式数据

  有时候可能会用到json格式进行数据的传输那么怎么把接收到的数据解析出来呢?下面介绍两种解析json数据的方法      通过谷歌的Gs

知识大全 Java程序实现压缩某目录

Java程序实现压缩某目录  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  publicclass

知识大全 在Java中将数据由UTF8转换成GB2312格式

Java进阶:在Java中将数据由UTF8转换成GB2312格式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起

知识大全 一个需要付费的视频下载下来之后是压缩包形式 解压后是exe格式的 打开后提示机器码 需输入相应的密码 我输

一个需要付费的视频下载下来之后是压缩包形式解压后是exe格式的打开后提示机器码需输入相应的密码我输数据不完整,请重新下载下载的视频压缩包解压之后是.exe格式的,怎么解决?点击看可以运行吗?如果不可以

知识大全 java操作word

  最近在做项目的时候需要这么一个功能客户有一大堆word格式的模板需要我们用程序向模板里面填充一些数据如果是直接重新写一个Word用POI或Itext都可以搞定关键是读取并解析而且Word里有表格图

知识大全 Java数据库程序中的存储过程设计

Java数据库程序中的存储过程设计  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  本文阐述了怎么

知识大全 网络数据流的java处理

  郭洪锋()该文章对编写客户服务器应用的java程序员有所帮助可以解决程序在对方出现故障的时候继续稳定运行  前言java程序要处理很多的网络数据网络数据发送和接收以及数据流的处理是java程序要特

知识大全 java程序操作MySQL数据库

java程序操作MySQL数据库  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  数据库内容&nb

知识大全 Java程序性能优化-数据库调优

Java程序性能优化-数据库调优  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!   数据

知识大全 为什么下载的档案为PDF格式却是压缩档案,双击后为ZIP格式,怎么也打不开

为什么下载的档案为PDF格式却是压缩档案,双击后为ZIP格式,怎么也打不开?  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让