`
jwfdp
  • 浏览: 46778 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

JAR & EAR读写操作简单实例

 
阅读更多

1. 读取Jar包里的MANIFEST.MF文件(读取EAR包里的文件相同的操作),大概步骤如下:

    1)用Jar包的绝对路径作为构参,New一个JarFile类

    2)用Jar包里的一个文件文件的相对路径作为参数,调用JarFile类的一个getJarEntry的方法,得到一个JarEntry类

    3)再用这个Entry类作为参数,调用JarFile的getInputStream文法,得到这个文件的InputStream

    4)接下来对InputSteam的操作与普通读取文件的方法相同

 

Java代码  收藏代码
  1. StringBuffer sb = new StringBuffer();  
  2. try  
  3. {  
  4.     JarFile testJarFile = new JarFile("c:/test/common.jar");  
  5.     JarEntry jarEntry = testJarFile.getJarEntry("META-INF/MANIFEST.MF");  
  6.     InputStream jarEntryInputStream = testJarFile.getInputStream(jarEntry);  
  7.   
  8.     BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(jarEntryInputStream));  
  9.     String readLine = null;  
  10.     while ((readLine = bufferedReader.readLine()) != null)  
  11.     {  
  12.         sb.append(readLine);  
  13.         sb.append("\r\n");  
  14.     }  
  15.   
  16.     System.out.println(sb.toString());  
  17. }  
  18. catch (IOException e)  
  19. {  
  20.     e.printStackTrace();  
  21. }  

 

2. 输出ear包里的jar到其它目录,与从Jar包读取相似,操作步骤如下

    1)用Ear包的绝对路径作为构参,New一个JarFile类

    2)用目标Jar包的相对路径作为参数,调用JarFile的getJarEntry方法,得到一个JarEntry类

    3)用这个JarEntry作为参数,调用JarFile的getInputStream方法,取得这个Jar包文件的InputStream

    4)接下来对InputStream的操作与普通写文件操作相同

Java代码  收藏代码
  1. try  
  2. {  
  3.     JarFile testEarFile = new JarFile("C:/test/test.ear");  
  4.     JarEntry jarEntry = testEarFile.getJarEntry("target.jar");  
  5.     InputStream jarEntryInputStream = testEarFile.getInputStream(jarEntry);  
  6.     FileOutputStream fileOutputStream = new FileOutputStream("c:/test/target.jar"true);  
  7.     int b = 0;  
  8.     while ((b = jarEntryInputStream.read()) != -1)  
  9.     {  
  10.         fileOutputStream.write(b);  
  11.     }  
  12.     fileOutputStream.flush();  
  13.     fileOutputStream.close();  
  14. }  
  15. catch (IOException e)  
  16. {  
  17.     e.printStackTrace();  
  18. }  

 

 3. 替换Ear包里的某些Jar包, 相对之前几个实例,这个会相对复杂一些,步骤如下:

     1)创建一个目标的Ear包File类,然后再得到一个JarOutputStream,接下来会往这里添加需要的Jar包

     2)读取源Ear包,然后JarFile类的entries()方法遍历源Ear包的所有文件

     3)判断要替换的Jar文件,跳过它,其它的文件马上写入目标的Ear包里

     4)关闭源Ear包

     5)建立要替换进来的Jar包的JarEntry,用FileInputStream类读取这个Jar包,然后马上写进目标Ear包里

     6)Flush JarOutputStream

     7)依次关闭其它仍未关闭的资源

Java代码  收藏代码
  1. try  
  2. {  
  3.     //先创建目标的ear包,再New一个JarOutputStream,以备输出目标Ear包之用  
  4.     File targetEarFile = new File("c:/test/target.ear");  
  5.     targetEarFile.createNewFile();  
  6.     FileOutputStream targetEarFileOutputStream = new FileOutputStream(targetEarFile);  
  7.     JarOutputStream newJarOutputStream = new JarOutputStream(targetEarFileOutputStream);  
  8.     byte buffer[] = new byte[100];  
  9.     int bytesRead;  
  10.   
  11.     //循环读取源Ear包里除开要替换的Jar包外的其它文件,并将这些文件写到目标Ear包里去  
  12.     JarFile sourceEarFile = new JarFile("c:/test/sourceEar.ear");  
  13.     Enumeration sourceEarJarEnties = sourceEarFile.entries();  
  14.     while (sourceEarJarEnties.hasMoreElements())  
  15.     {  
  16.         JarEntry jarEntry = (JarEntry) sourceEarJarEnties.nextElement();  
  17.   
  18.         //要替换Jar包,跳过它  
  19.         if (jarEntry.toString().equals("sourceJar.jar"))  
  20.         {  
  21.             continue;  
  22.         }  
  23.   
  24.         //其它文件马上写到目标Ear包里去  
  25.         InputStream jarInputStream = sourceEarFile.getInputStream(jarEntry);  
  26.         newJarOutputStream.putNextEntry(jarEntry);  
  27.         while ((bytesRead = jarInputStream.read(buffer)) != -1)  
  28.         {  
  29.             newJarOutputStream.write(buffer, 0, bytesRead);  
  30.         }  
  31.         newJarOutputStream.flush();  
  32.         jarInputStream.close();  
  33.     }  
  34.     //到这里源Ear包己经没有用了,close掉  
  35.     sourceEarFile.close();  
  36.   
  37.     JarEntry targetJarEntry = new JarEntry("targetJar.jar");  
  38.     newJarOutputStream.putNextEntry(targetJarEntry);  
  39.     FileInputStream targetJarFileInputStream = new FileInputStream("c:/test/targetJar.jar");  
  40.     while ((bytesRead = targetJarFileInputStream.read(buffer)) != -1)  
  41.     {  
  42.         newJarOutputStream.write(buffer, 0, bytesRead);  
  43.     }  
  44.     newJarOutputStream.flush();  
  45.     targetJarFileInputStream.close();  
  46.     newJarOutputStream.close();  
  47.     targetEarFileOutputStream.close();  
  48. }  
  49. catch (Exception ex)  
  50. {  
  51.     ex.printStackTrace();  
  52. }  
分享到:
评论

相关推荐

    coherence.jar&coherence;-work.jar&tangosol;.jar

    2. **`coherence-work.jar`**:这个文件通常是Coherence工作线程池的实现,用于处理后台任务和异步操作。在`openfire`环境中,它可能用于管理服务器的并发执行策略,如线程池管理、任务调度等,从而优化资源分配和...

    JRI.jar&JRIEngine.jar&REngine.jar

    JRI.jar是这个接口的库文件,包含了必要的Java类和方法,使得Java开发者可以在他们的代码中创建R引擎实例,执行R脚本,获取计算结果,甚至处理R的数据结构,如向量、矩阵和数据框。在实际应用中,你可以利用JRI.jar...

    mail.jar&activation.jar

    JavaMail 是一个开源的...总的来说,mail.jar和activation.jar为Java开发者提供了一个强大且灵活的工具,能够轻松地在应用程序中集成邮件功能,无论是简单的文本邮件还是复杂的MIME结构的邮件,都能处理得游刃有余。

    protobuf--java-3.2.0.jar & protoc-3.2.0-windows-x86_32.exe

    开发者可以使用protoc编译.proto文件生成Java代码,然后在项目中引入protobuf-java-3.2.0.jar,进行数据的序列化和反序列化操作,实现高效的数据交换。在实际应用中,protobuf广泛用于微服务、RPC框架、数据库存储等...

    javamai.jar&&activation.jar下载

    目前JAVA mail api 的所有版本都需要JAF的支持。...目前Java Mail还没有被加在标准的Java 开发工具中,需下载javamai.jar和activation.jar放置在实例程序的WEB/INF/lib目录下,此资源提供了这两个Jar。

    jxl.jar表格读写操作必备jar包

    通过这个jar可以帮助你实现读出表格数据并将表格数据批量导入到数据库和表格的写入功能。

    jxl操作excel实例,jxl jar包下载

    本文将详细介绍如何使用`jxl`库进行Excel操作,并提供一个简单的实例。 首先,`jxl.jar`是`jxl`库的主要组件,你需要将其添加到你的项目类路径中。这可以通过将`jxl.jar`放在`lib`目录下或在IDE(如Eclipse、...

    java 读写word 转html 等操作实例及jar包

    本实例将探讨如何利用Java实现这些功能,并提供相关的jar包支持。以下是对这些操作的详细说明: 一、读取Word文档 Java中可以使用Apache POI库来读取Word文档(.doc或.docx格式)。Apache POI是一个流行的API,它...

    java中jxl.jar读写excel和jdom.jar读写xml的例子

    接下来,我们转向`jdom.jar`库,它提供了一个简单、灵活且强大的API,用于处理XML文档。 1. **读取XML文件**: - 引入jdom.jar库。 - 使用`JDOMBuilder.build(InputStream)`或`JDOMBuilder.build(File)`创建...

    数据读写操作API(源码+jar包+文档)

    在Java编程中,数据读写和IO操作是至关重要的部分,尤其在处理文件、网络通信以及数据库交互时。本资源包含的"数据读写操作API"提供了一个方便的工具集,帮助开发者避免直接操作底层的IO流,简化了数据处理过程。这...

    registry.jar java读写注册表的开源库

    在Java编程环境中,有时我们需要对操作系统级别的注册表进行读写操作,这在处理系统设置、安装卸载软件或与其他系统组件交互时尤为常见。`registry.jar`是一个专门为Java设计的开源库,它允许开发者在Java应用程序中...

    POI 官方API大全及基本操作实例(含jar包)

    这个资源“POI 官方API大全及基本操作实例(含jar包)”提供了全面的API文档和实例,帮助开发者快速上手使用POI进行Excel文件的操作。 在Java编程环境中,Apache POI库使得我们能够创建、读取和修改Excel文件(.xlsx...

    jar包做服务nssm实例

    将java应用程序做成开机自启动服务,附件中通过nssm将jar应用程序做成服务的操作说明及实例。下载即可运行,可仿照类似做成服务! 第一步: 将 jar 包及其依赖包放置运行目录. 假设目录结构为 /lib(第三方依赖) app...

    java+读写word+转html+等操作实例及jar包

    使用Apache POI进行Word操作需要引入对应的jar包,包括`poi-ooxml-schemas`, `poi-ooxml`, 和 `poi`。这些库可以从Apache官方网站下载,或者通过Maven或Gradle依赖管理工具添加到项目中。 以上内容涵盖了Java操作...

    excel进行读写jar

    "excel进行读写jar" 提供了一种方便的方式,通过引入特定的Java Archive (JAR) 文件来实现在Android应用中对Excel文件的操作。这个JAR库通常包含了对Excel文件读写的API,使得开发者无需依赖于复杂的库或者Microsoft...

    读写Excel所用到的jar包

    5. JODA:JODA(Java Object Data Access)是一个用于读写Excel文件的库,它提供了一个直观的API来操作Excel数据,支持老版本的Excel格式和新版本的OOXML格式。 6. EPPlus:EPPlus是一个.NET框架的库,但它有一个...

    简单的webservice+Cxf+Spring数据对接实例以及jar.rar

    简单的webservice+Cxf+Spring数据对接实例以及jar.rar简单的webservice+Cxf+Spring数据对接实例以及jar.rar简单的webservice+Cxf+Spring数据对接实例以及jar.rar简单的webservice+Cxf+Spring数据对接实例以及jar.rar...

    java操作linux实例(含jcraft jar包)

    JCraft是一个提供SSH2协议实现的Java库,其中包含的`jsch-0.1.54.jar`是本次实例的关键。这个jar包提供了Java程序通过SSH连接到远程服务器的能力,包括文件传输、命令执行等功能。`jsch-0.1.54.jar`是jsch库的一个...

    war包_jar包_ear包_及打包方法

    war包_jar包_ear包_及打包方法

    Java读写Excel的jar包

    jxl.jar概述:  通过java操作excel表格的工具类库  支持Excel 95-2000的所有版本  生成Excel 2000标准格式  支持字体、数字、日期操作  能够修饰单元格属性  支持图像和图表  应该说以上功能已经能够大致满足...

Global site tag (gtag.js) - Google Analytics