从JAR文件中读取文件 (2)

分类: J2SE   出处:iocblog整理  更新时间:2008-09-03   添加到收藏  

  如果你用j2se1.4.1中的jce.jar作为参数运行上面的jardir程序,你将看到类似于下面的输出(...部分为省略掉的输出):
  
  meta-inf/manifest.mf  5315  1910
  meta-inf/4jcejars.sf  5368  1958
  meta-inf/4jcejars.dsa  2207  1503
  meta-inf/    0    2
  javax/ 0    0
  javax/crypto/  0    0
  javax/crypto/interfaces/    0    0
  javax/crypto/interfaces/dhkey.class   209   185
  javax/crypto/interfaces/dhpublickey.class    265   215
  javax/crypto/interfaces/dhprivatekey.class   267   215
  javax/crypto/interfaces/pbekey.class  268   224
  javax/crypto/secretkey.class  167   155
  ...
  
  注意输出最开始的meta-inf行。这是manifest和安全认证信息。0字节的entries不是文件,但是有点相当于目录。
  
  为了从jar文件中真正读取一个指定的文件,你必须到其entry的inputstream。这和jarentry不一样。这是因为jarentry只是包含该entry的有关信息,但是并不实际包含该entry的内容。这和file和fileinputstream的区别有点儿相似。访问文件没有打开文件,它只是从目录中读取了该文件的信息。下面是如何得到entry的inputstream:
  
   inputstream input = jarfile.getinputstream(entry);
  
  当你有了输入流,你就可以像读取其他流一样读取它。在文本流中(text stream),记得使用读取器(reader)从流中取得字符。对于面向字节的流,如图片文件,直接读取就行了。
  
  下面的程序演示如何从jar文件中读取文件。指定jar文件的名称,要读取的文件的名称(打包jar文件中的某一个文件)作为参数来调用该程序。要读取的文件应该有一个文本类型的。
  
   import java.io.*;
   import java.util.jar.*;
  (文章来源 www.iocblog.net)
   public class jarread {
    public static void main (string args[])
      throws ioexception {
     if (args.length != 2) {
      system.out.println(
       "please provide a jar filename and file to read");
      system.exit(-1);
     }
     jarfile jarfile = new jarfile(args[0]);
     jarentry entry = jarfile.getjarentry(args[1]);
     inputstream input = jarfile.getinputstream(entry);
     process(input);
     jarfile.close();
    }
  
    private static void process(inputstream input)
      throws ioexception {
     inputstreamreader isr =
     new inputstreamreader(input);
     bufferedreader reader = new bufferedreader(isr);
     string line;
     while ((line = reader.readline()) != null) {
      system.out.println(line);
     }
     reader.close();
    }
   }
  
  假设在myfiles.jar文件中有一个spider.txt文件,spider文件的内容如下:
  
   the itsy bitsy spider
   ran up the water spout
   down came the rain and
   washed the spider out
  
  你可以通过下面的命令来显示该文本文件的内容:
  
   java jarread myfiles.jar spider.txt 
  
  有关jar文件的更多内容,请参考jar文件规范
  (文章来源 www.iocblog.net)

上一页 [1] [2]



文章整理:iocblog
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。