`

Java数据压缩格式程序设计方法之JAR压缩格式

    博客分类:
  • Java
阅读更多
1、JAR格式文件介绍

在JDK1.1版中,定义了用于将与Java应用程序相关的多个文件以及相关资源整合在一起的数据文件类型-JAR。也许读者会注意到:Sun以及其它公司发布的多种类型Java库都是以JAR形式进行文件压缩和封装的。

从本质上讲,JAR压缩文件采用ZIP格式进行数据压缩。由于最初引入JAR数据压缩类型的目的在于将开发完成的软件进行进行发布,因此,在JDK中定义了JAR类型文件管理工具,用于创建、浏览、解压缩以及执行JAR文件等操作。另外,在JDK API中还定义了封装在java.util.jar包中的多个对象,用于在Java应用程序中对JAR文件进行管理。

2、 利用JDK工具操作JAR文件

在JDK安装目录的bin子目录中,包括名称为“jar.exe”的可执行程序。该程序在执行过程中可以利用如下表所示的各个选项,实现JAR文件的多种类型操作:


表1 JDK压缩文件管理工具应用选项表




那么,对于包含了class字节码文件和包含相应资源文件的一个目录,利用JDK文档管理工具,如何创建JAR文件从而实现数据压缩的呢?让我们看下面的例子:

例如,对于一个要发布的软件项目Demo,在该目录中包括一个名称为Demo.class的Java字节码文件和包含声音文件的目录Audio、包含图片文件的目录Images,如下图所示:





那么,利用下面的命令即可实现将Demo项目创建成可发布的JAR类型压缩文档:

C:>jar cvf Demo.jar Demo.class Audio Images

利用上述命令创建的JAR类型压缩文件不仅将Demo目录中的多种资源进行打包,而且将这些数据文件进行了压缩。如果读者不需要在打包过程中进行数据压缩,可以设置jar执行选项为“cvf0”。

如果利用jar工具的tf选项查看新创建的JAR文件,读者会发现在该文件中新增了名称为META-INF的目录,在该目录中包含MANIFEST.MF文件,该文件的作用是什么呢?总的说来:由于在创建JAR文件过程中可以进行数字签名、版本控制、包封装以及多种类型的功能扩展,因此,MANIFEST.MF文件即用于说明当前的JAR文件在创建过程中采用了何种类型的功能扩展,典型的MANIFEST.MF文件代码如下:


Manifest-Version: 1.0
Name: java/math/BigDecimal.class
SHA1-Digest: TD1GZt8G11dXY2p4olSZPc5Rj64=
MD5-Digest: z6z8xPj2AW/Q9AkRSPF0cg=




该文件的代码说明了压缩文件采用的数字签名内容。

3、 JAR包对象定义结构

除了可以利用JAR文档管理工具对jar文件进行管理之外,在JDK API中,还定义了java.util.jar包,其中封装了用于在Java应用程序中创建、维护和操作jar文件的多种类型对象,主要对象包括:

Attributes:用于将JAR文件中说明属性内容映射到该类的各个字符串变量中;

JarEntry:用于对应JAR文件中封装的各个被压缩文件;

JarFile:对应磁盘文件系统中的JAR压缩文档对象;

JarInputStream:从JAR文件中读取压缩内容的流对象;

JarOutputStream:创建JAR文件的流对象;

Manifest:对应JAR文件中说明内容的对象。

在实际的应用程序设计过程中,与创建和管理JAR压缩文档相关的对象为JarInputStream和JarOutputStream。在下面的内容中,将演示在Java应用程序中创建JAR类型压缩文档的方法。
4、创建JAR文档应用程序设计方法

下面的代码为创建JAR类型压缩文档的Java应用程序代码:


//JARDemo.java
import java.io.*;
import java.util.jar.*;
public class JARDemo
{
public static void main(String[] args)
{
if (args.length !=2 )
{
System.out.println("请输入被压缩文件的名称和压缩文件的名称!");
System.exit(1);
}
try
{
//创建文件输入流对象
FileInputStream in = new FileInputStream( args[0] );
//创建文件输出流对象
FileOutputStream out = new FileOutputStream( args[1] );
//创建JAR数据输出流对象
JarOutputStream jarOut = new JarOutputStream( out );
//创建指向压缩原始文件的入口
JarEntry entry = new JarEntry( args[0] );
jarOut.putNextEntry( entry );
//向压缩文件中输出数据
int nNumber;
byte[] buffer = new byte[512];
while ((nNumber=in.read(buffer)) != -1)
jarOut.write(buffer,0,nNumber);
//关闭创建的流对象
jarOut.close();
out.close();
in.close();
}
catch(IOException e)
{
System.out.println( e );
}
}




在该程序的实现代码中,首先创建用于进行文件输入和输出的FileInputStream和FileOutputStream对象,并以FileOutputStream对象实例为参数创建JarOutputStream对象实例,从而为创建JAR格式压缩文件建立数据流基础。

在随后的代码中,以被压缩文件的文件名为参数,创建在JAR压缩文件中指向压缩原始文件的Entry对象实例,并利用putNextEntry方法将该Entry存储进入压缩文件中。最后,利用JAROutputStream对象中定义的write方法向输出流中写出从压缩原始文件中读取的数据,从而创建JAR格式的压缩文件。

利用Java语言创建JAR格式压缩文件的方法很简单,那么,如何利用JDK API中定义的对象将被压缩的文件解压缩呢?请读者看下一节的内容。

5、 JAR文档解压缩方法

下面的程序代码用于将JAR类型文档解压缩后,恢复成为独立的数据文件:


//UnjarDemo.java
import java.io.*;
import java.util.jar.*;
public class UnjarDemo
{
public static void main(String[] args)
{
if ( args.length !=2 )
{
System.out.println("Usage:java UnjarDemo ");
System.exit(1);
}
try
{
//创建文件输入流对象实例
FileInputStream in = new FileInputStream( args[0] );
//创建Zip压缩格式输入流对象实例
JarInputStream jarin = new JarInputStream( in );
//创建文件输出流对象实例
FileOutputStream out = new FileOutputStream( args[1] );
byte[] buffer = new byte[1024];
int nNumber;
while ((nNumber = jarin.read(buffer, 0, buffer.length)) != -1)
out.write(buffer, 0, nNumber);
//关闭文件流对象
jarin.close();
out.close();
in.close();
}
catch(IOException e)
{
System.out.println(e);
}
}
}




该程序的代码结构不是很复杂,请读者自行分析该文件中的对象应用形式以及JAR压缩文件解压缩方法。

6、 小结

在本部分的内容中,首先介绍了JAR类型文档的结构和JDK中jar文档管理工具的应用方法。在随后的内容中,以java.util.jar包中的应用对象为基础,讲解了Java语言创建和维护jar压缩文档程序设计方法。
分享到:
评论

相关推荐

    Java写的五子棋程序 已经打成jar包

    【标题】中的“Java写的五子棋程序 已经打成jar包”表明这是一个使用Java编程语言开发的五子棋游戏软件,已经被打包成JAR(Java Archive)文件格式。在Java平台上,JAR文件是一种标准的归档格式,用于集合多个类文件...

    ZIP格式压缩/解压系统设计(JAVA)

    JDK环境中提供了多种类型的数据压缩方式,总结起来,利用Java语言可以创建的数据文件压缩格式包括如下类型:  ●ZIP格式  ●GZIP格式  ●JAR格式 通过设计,允许创建ZIP压缩文件,并对ZIP压缩文件中包含的...

    java-unrar-0.5.jar

    Java-unrar-0.5.jar 是一个专门为Java开发者设计的库,用于处理RAR文件格式,实现了RAR文件的读取和解压功能。这个库对于那些需要在Java应用程序中集成RAR文件支持的开发者来说是一个非常实用的工具。下面将详细介绍...

    Java程序日志类jar包

    在给定的"Java程序日志类jar包"中,我们可以推测其中可能包含了诸如Log4j、SLF4J、Logback等主流的日志处理框架的库文件,这些框架在Java生态系统中广泛被使用。 1. **Log4j**: 是Apache的一个开源项目,它为应用...

    java几个常用的jar包

    Java开发过程中,jar(Java Archive)包是必不可少的资源,它们包含了预编译的类、接口、资源和其他元数据,方便开发者在项目中引用。在给出的标题和描述中,提到了几个常用的Java jar包,分别是:activation.jar、...

    java判断文件编码格式 三方工具包 cpdetector_1.0.10.jar

    总的来说,`cpdetector_1.0.10.jar`是Java开发中的一个实用工具,它提供了高效且准确的文件编码检测功能,帮助开发者更好地处理文本数据,避免因编码问题而引发的程序异常。通过理解并熟练使用这类工具,可以提升...

    java.Word.jar

    Java Word.jar是一个专门为处理办公文档而设计的Java工具包,它允许开发者在Java应用程序中集成对Word文档的操作。这个工具包通常包含了一系列的类库和接口,为开发人员提供了便捷的方式来创建、读取、编辑和转换...

    JAVA文件压缩与解压缩实践的实现.rar

    支持多种压缩格式:Java提供了对多种常见压缩格式的支持,如ZIP、GZIP等。 异常处理:处理压缩和解压缩过程中可能出现的异常,保证程序的稳定性和可靠性。 技术实现: 压缩API:Java提供了java.util.zip和java.util...

    java-client-6.1.0.jar

    - **定义**:JAR文件是一种压缩格式的文件,它类似于ZIP文件,但专门为Java应用程序设计。 - **用途**:主要用于打包Java类文件和资源文件,以便于发布和部署Java应用或库。 - **组成**:JAR文件通常包含了一个清单...

    java jar包

    Java的JAR(Java Archive)包是Java编程语言中用于集合类和其他资源文件的压缩格式。它是Java平台的标准部分,允许开发人员将多个文件打包到一个可执行的.jar文件中,便于分发、部署和执行。SSH(Spring、Struts、...

    国产达梦数据库对应java-jdbc相关jar包

    jar(Java Archive)文件是Java平台特有的归档文件格式,通常包含已编译的类文件、资源文件以及相关的元数据,便于在Java环境中运行或部署。 标签“开发工具”和“jar”指出了这些文件是开发过程中使用的工具,特别...

    73个jar手机小游戏游戏合集

    "jar"文件是一种Java Archive格式,它用于打包Java类文件和相关的元数据,通常用于分发Java应用程序或库。在这个特定的情况下,每个jar文件代表一款小游戏,用户无需复杂的步骤,只需将它们移动到手机的相应目录,就...

    kafka需要的jar包集合

    6. **lz4-java.jar** 和 **snappy-java.jar**:这些是压缩库,Kafka使用它们对数据进行高效压缩和解压缩。 7. **metrics-core.jar** 和 **metrics-serde.jar**:Kafka使用Metrics库来收集和报告系统性能指标。 8. ...

    java简单界面的ATM程序.rar

    【标题】:“java简单界面的ATM程序” 这个标题表明我们正在讨论一个使用Java编程语言实现的自动取款机(ATM)模拟程序。...此外,良好的程序设计原则,如单一职责原则、开闭原则等,也是编写高质量ATM程序的关键。

    jar程序集new~

    在Java开发中,JAR(Java Archive)文件是一种打包格式,用于收集多个类文件、相关的元数据以及资源文件,以便在Java平台上分发和运行。"jar程序集"这一概念,是Java应用程序或库的集合,它们被合并到一个单一的可...

    notepad.rar 记事本 java小游戏源代码 jar压缩

    标题中的"notepad.rar 记事本 java小游戏源代码 jar压缩"表明这是一个包含记事本程序源码和Java小游戏源代码的RAR压缩文件。RAR是一种流行的文件压缩格式,用于将多个文件打包成一个单一的文件,便于存储、传输和...

    Java应用程序转化成exe文件的N种方法

    TowerJ是一款专为Java应用程序设计的转换工具,能够将Java的.class文件转换为Windows平台下的exe文件,特别适合于小型项目或简单应用程序的快速发布。 #### 方法七:使用jshrink jshrink是一款能够将JAR文件转换为...

    java-unrar-0.3.jar和commons-logging-1.1.1.jar

    RAR是一种常见的文件压缩格式,由RARLAB开发,它以较高的压缩比和对损坏文件的恢复能力而受到欢迎。然而,Java标准库并不原生支持RAR文件的读取和解压,因此,像`java-unrar`这样的第三方库就显得尤为重要。`java-...

    java 2语言命令详解 JAVA程序设计

    本文将深入解析Java 2语言的相关命令,帮助读者理解和掌握JAVA程序设计的基础知识。 首先,我们需要了解Java开发工具包(JDK)中的一些基本命令。JDK提供了一组用于开发、编译和执行Java程序的命令行工具。其中最...

    Tomcat-PHP: script-api.jar,php-servlet.jar,php-script.jar,JavaBridge.jar

    描述中提到的"jar包"是Java Archive文件的缩写,是Java平台中用于存储类文件、资源文件和元数据的压缩格式。在Tomcat-PHP集成中,以下几个关键的jar文件起到重要作用: 1. `script-api.jar`:这是与Java Scripting ...

Global site tag (gtag.js) - Google Analytics