使用Java归档文件
作者:admin
分类:PHP, JAVA, .NET技术
时间:2016-05-12 10:15:53
点击量:1996
存档放在一个作为一个单元的一个或多个文件的集合。通常,在Java程序中,我们会遇到称为JAR(Java归档)的归档文件。这种类型的文件对于每一个Java程序员都不陌生。归档文件通常通过使用文件归档软件如WinZip,7-zip,tar等创建。这些类型的文件特别可用于多个文件存储和作为单个单元的传输。文件归档有时会采用数据压缩和加密的方式。本文通过使用Java编程深入研究了一些与归档文件工作相关的关键概念。
数据压缩的概述
档案文件可以采用不同的数据编码技术来减少一个文件的内容所占字节数。 有多种压缩算法来减小文件大小;通常它们有两种类型: 无损和有损压缩。 无损压缩算法的工作不会产生任何数据损失,当数据文件的大小被减少时。 另一方面,有损压缩是假定丢失一些信息是可接受的。 例如,当压缩一个图像文件时,一些颜色的损失不会造成太大的视觉差异,但可显著降低文件大小。 这对于诸如图像,视频,等等类型的文件是可接受的。 但是,这样的有损压缩并不对于包含产品信息的文件是可接受的。此时,我们需要应用无损数据压缩技术,因为当被解压缩时,我们需要的是不丢失任何数据的精确信息。
例如,对于一个无损数据压缩,一个字符串,如‘AAAAAABBBB’可被存储为'6A4B';换言之,“六A和4 B的'。 保存“6A4B”的空间比存储字符重复序列的空间少得多。 这个简单的技术被称为运行长度算法(RLE)。 RLE可通过被称为统计冗余的方法,其通过计数器代替重复序列的字符进而减小文件大小。 当前有损和无损数据压缩的算法有很多种。 例如, Lempel-Ziv (LZ)算法的变量 - LZR(Lempel-Ziv-Renau)算法,其形成了一个基础的ZIP文件,LZW(Lempel-Ziv-Welch)在GIF图像内使用。
编码技术,如MP3,Vorbis和AAC都是有损的,而JPEG 2000, FLIF,等等都是无损的。 它们对于图像或音频/视频压缩是非常有用的,其丢失几个比特位并不会影响整个内容,但肯定会降低一些品质,如果你比较挑剔微小的细节。试着听一个MP3音频和相同的文件,以未压缩音频格式,如WAV,AIFF,AU,或PCM格式。
https://en.wikipedia.org/wiki/Data_compression
https://en.wikipedia.org/wiki/Lossless_compression
https://en.wikipedia.org/wiki/Audio_file_format
这个过程被反转以获得实际的数据内容时,被称为解压缩。
图形1. 归档如何运行
在Java中压缩数据
Java提供了两个API类,被称为Deflater和Inflater,在java.util.zip包内进行压缩和解压数据。这两个类提供了Java的核心压缩及解压缩工具。执行这些类