Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 338|回复: 0

[Java基础知识]在应用程序中处理jar文件

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-10-1 08:56:17 | 显示全部楼层 |阅读模式
    本文的目的在于讲述如何通过程序处理jar文件,这与在命令行或者IDE中操作jar文件差别比较大。我们主要涉及到的内容是java.util.jar包以及java.io包的使用。

         很多开发者对java.util.jar包并不熟悉,因此文章将主要讲述如何使用其中的8个类,其中JarFile和JarEntry类是核心类,他们分别代表了jar文件以及jar文件中的文件实体。通常我们可以通过如下方法构建JarFile的实例,有了JarFile的引用后我们就可以对其进行处理了。

    JarFile(File file)  
    JarFileFile file, boolean verify)  
    JarFile(File file, boolean verify, int mode)  
    JarFile(String name)  
    JarFile(String name, boolean verify)   
      

         你可以使用File对象或者String类型的文件名来构建JarFile,例如JarFile jarFile = new JarFile("j2me.jar");得到这个引用后我们可以调用jarFile.entries()方法返回JarEntry对象的Enumeration。这样我们就可以操作他了。首先我们编写一个程序来浏览jar文件中的内容。
        import java.io.*;
        import java.util.*;
        import java.util.jar.*;

        public class ListJar {
          public static void main(String args[]) {
            for (int i=0, n=args.length; i<n; i++) {
              try {
                listjar(args);
              } catch (IOException e) {
                System.err.println("Problems reading: " + args);
              }
            }
          }

          private static void listjar(String name)  
                  throws IOException {
            System.out.println("Jar: " + name);
            JarFile jar = new JarFile(name);
            Enumeration e = jar.entries();
            while (e.hasMoreElements()) {
              listInfo((JarEntry)e.nextElement());
            }
            System.out.println();
          }

         private static void listInfo(JarEntry entry) {
            System.out.println("        " + entry.getName());
         }
        }
    程序的内容比较简单,我们编译通过后在相同的目录放置一个jar文件,然后执行java ListJar xxx.jar。下面是我执行后的结果:
    C:TEMP>java ListJar nts.jar
    Jar: nts.jar
             META-INF/
             META-INF/MANIFEST.MF
             CleanMIDlet.class
             CleanWorker.class
             DeluxeMIDlet.class
             DeluxeWorker$1.class
             DeluxeWorker.class
             PrimitiveMIDlet.class
             SimpleWaitMIDlet$1.class
             SimpleWaitMIDlet.class
             SingleMIDlet.class
             SingleWorker.class
             ThreadedMIDlet$1.class
             ThreadedMIDlet.class
             WaitCanvas$1.class
             WaitCanvas.class

          在我们的程序中不仅可以浏览这些文件,还可以对特定的文件进行读取。比如我想读取MANIFEST.MF中的内容,那么我们可以得到Attributes类,然后得到其中的内容。下面的方法可以读取MANIFEST.MF中属性为MIDlet-4的值。
          private static void getManifest(String name) throws IOException
          {
           System.out.println("Jar: " + name);
           JarFile jar = new JarFile(name);
           Manifest mf = jar.getManifest();
           System.out.println((mf==null)?"null manifest":mf.toString());
           Attributes at = mf.getMainAttributes();
           System.out.println(at.getValue("MIDlet-4"));
             
          }
    java.util.jar包中包含了很多处理jar文件的api,用户应该多参考java doc。

      

      
      
       
       

         
       

         
       
      


      

      



                            function TempSave(ElementID)
                            {
                                    CommentsPersistDiv.setAttribute("CommentContent",document.getElementById(ElementID).value);
                                    CommentsPersistDiv.save("CommentXMLStore");
                            }
                            function Restore(ElementID)
                            {
                                    CommentsPersistDiv.load("CommentXMLStore");
                                    document.getElementById(ElementID).value=CommentsPersistDiv.getAttribute("CommentContent");
                            }
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-5-4 19:45 , Processed in 0.362035 second(s), 46 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表