WEB开发网
开发学院WEB开发Jsp 在应用程序中处理jar文件 阅读

在应用程序中处理jar文件

 2008-01-05 08:56:08 来源:WEB开发网   
核心提示: 本文的目的在于讲述如何通过程序处理jar文件,这与在命令行或者IDE中操作jar文件差别比较大,在应用程序中处理jar文件,我们主要涉及到的内容是java.util.jar包以及java.io包的使用, 很多开发者对java.util.jar包并不熟悉,下面的方法可以读取MANIFEST.MF中属性为MIDlet
在应用程序中处理jar文件   本文的目的在于讲述如何通过程序处理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[i]);
     } catch (IOException e) {
      System.err.PRintln("Problems reading: " + args[i]);
     }
    }
   }

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("\t" + 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。


Tags:应用程序 处理 jar

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接