<%-- JSP全站自动生成HTML下载新闻系统 V3.1 作者:JSP天空网站长 曹进 QQ:173241393 --%> 在Java中解读压缩文件
 
用户名:
密码:
终身会员
  首页 网络文摘 技术专题 下载中心 JSP培训 公司产品 JSP虚拟主机 技术论坛 会员 JSP免费空间  
  技术文摘: JSP基础 | JSP高级 | JSP环境 | JAVA基础 | JAVA高级 | JAVA工具 | JAVA数据库 | WEB框架 | XML相关 | JAVA考试 | J2EE相关 | J2ME相关 |
  视频下载: 程序设计数据库相关教程计算机基础教程图形图像网络技术网络安全时空书库EasyShop虚拟主机JSP培训技术论坛
  书籍教程: JSP教程Java教程图像软件XML教程数据库教程网页教程工具软件服务器相关ASP教程PHP教程CGI教程.NET教程
  代码下载: ASP代码下载JSP代码下载PHP代码下载CGI代码下载Flash代码C/C++/VCPowerBuilderDelphiVisualBasicVisualFoxpro
您的位置: 首页 -> 文章分类 -> JAVA高级 -> 在Java中解读压缩文件
 文摘搜索
 
 文摘资源分类
 
 文摘总排行榜TOP10
 
 最新更新文摘TOP10
 

在Java中解读压缩文件

[来源]www.jspsky.com管理员   [作者]网络文摘   [时间]2005-4-7
推荐等级: 点击:
近来,我被安排从事一项很重要的工作:把Web日志放入SQL数据库中进行分析,不巧的是,这些日志文件是GZIP格式,每一次请求信息都被加密,需要解析。我一直认为Java是做好的程序语言,所以我决定编一个程序来解析这些日志文件。

我一直担心解析加密文件的解压缩过程,所以我决定察看一下J2SDK 1.3.1 API文档,看看是否有帮助,在Java.util压缩包的右侧列表中正好有Java.util.jar和Java.util.zip package,本文中我主要谈谈解读压缩文件并轻松演示一下。

Java.util.zip压缩包
Java.util.zip压缩包对读写ZIP和GZIP格式文件提供了分类,从这些格式中读取文件就需要创建合适的 InflaterInputStream,先以GZIP格式为例。

GZIPInputStream可以以InputStream (象FileInputStream)为例,在我的例子中,我想要读取一个文件中的一行这样我就要用StringTokenizer解析每一个entry,为了达到这一目的,我采用在代码下创建BufferedReader的方法。(见表A中的所有源代码)

gzipReader = new BufferedReader(new InputStreamReader(new GZIPInputStream(new FileInputStream(fileName))));

这行代码可以让我们同时在一行中读取整个文件,看一下下面的结果:

C:〉java Zip test.txt.gz
contents of test.txt.gz...
line of this test file that is compressed.
line of this test file that is compressed.
line of this test file that is compressed.
line of this test file that is compressed.
line of this test file that is compressed.
line of this test file that is compressed.
line of this test file that is compressed.
line of this test file that is compressed.
line of this test file that is compressed.
line of this test file that is compressed.

这是GZIP格式的文件,ZIP文件是一个小陷阱,因为你可以包含一个或更多的文件,ZipFile类可以简化一个文件的重复情况,ZipFile object可以由File object或说明文件名和路径的String来创建。ZipFile可以提供大量的ZipEntry objects,从中,可以得到文件的一些值(比如文件大小、压缩比例等等)。ZipFile和ZipEntry结合使用, 可以得到GZIPInputStream来读取整个目录内容见表B。

也可以采用同样的方式读取上面提到的GZIP文件。

Java.util.jar压缩包
Java.util.jar压缩包对读写JAR (Java 文档)格式文件提供了分类,这是基于ZIP文件的标准格式,压缩包中的大多数类都扩展了Java.util.zip压缩包的副本。从JAR文件中读信息与从ZIP中读信息非常相似,JarFile类与ZipFile类功能相同。(实际上是演变过来的)

JarFile详细的清单,见表A,创建了JarFile的同时也就生成了详细的清单目录,之后,每一个entry都按与前面例子中ZIP文件相同的方式来读取信息(毕竟他们都是ZIP文件),你可能会注意到代码中包含检查entry是否是一个目录的语句,这一方法在ZipEntry类中也有,在创建并读取InflaterInputStream之前核实一些entry是否是目录路径。

节省时间和空间
解析加密需要一定的过程,从InflatorInputStream中读取信息可以节省时间和磁盘空间。我要处理的文件是非常大的(30 MB压缩, 150 MB未压缩)。直接读取压缩文件,那么在读之前就没有时间来解压缩,同时磁盘也没有足够的空间了。首先,如果文档非常小,应用API是很困难的,但是搜索一下Java论坛,就会有拨云见日的感觉。下一个逻辑步骤就是往压缩文件中写数据,在下一篇文章中,我会很高兴地为大家说明这一问题。




摘自:Nnt China   时间:2003年1月13日 
[收藏][打印][关闭]
在线咨询服务 在线咨询服务 在线咨询服务 在线咨询服务
Copyright©2005-2006陕西思远数码科技有限责任公司 服务电话:029-88212987 传真:029-88278265 售后服务QQ:173241393
地址:陕西省西安市吉祥路186号太白新苑C座2104 陕ICP备05004508号