网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.一个项目经理在失败的项目得到的.
.EJB应用技术的体系结构详解(1).
.关于Java连接各种数据库的实例.
.关于如何用Java动态代理实现AOP的.
.Springframwork中集成Velocity的.
.Microsoft.Net 的Java实现.
.EJB 异常处理的最佳做法(1).
.gsoap中文文档(5.gSoap2.x版与g.
.谈谈各种JAVA中的调用程序方式.
.用Java Servlets代替CGI.
.小议如何在Applet 中显示图象.
.java: isn‘t it ironic?.
.Java网络编程之URI、URL研究(上.
.[JAVA100例]076、在Applet中使用.
.J2EE TM 蓝图摘要.
.克服J2SE 1.3-1.4 的不兼容性.
.详细说明MIDP中的属性问题.
.JAVA使用XML作为持久存储介质实现.
.The Model-View-Controller Arch.
.直接召唤系与IoCfashion使用Spri.

在应用程序中处理jar文件

发表日期:2008-1-5


在应用程序中处理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。


上一篇:使用Java操作文本文件 人气:708
下一篇:Jar文件高级应用指南 人气:638
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐