[转]java 从jar中读取文件 三种方法

  • Sample1-利用Manifest文件读取jar中的文件

1.文件目录
test--
     --a.text
     --b.gif

2. Menifest文件内容:
Manifest-Version: 1.0
abc: test/a.txt
iconname: test/Anya.jpg
注意:manifest.mf文件最后一行要打一回车
Another Notification:
如果manifest文件内容是:
Manifest-Version: 1.0
Main-Class: com.DesignToolApp
Class-path: lib/client.jar lib/j2ee.jar
在MANIFEST.MF文件的最后,要留两个空行(也就是回车),才可以识别到Class-Path这一行,如果只有一个空行,那么只识别到Main- Class这一行。Class-Path中的库名用空格格开,使用和jar包相对的路径,发布时把jar包和其他用到的类库一起交给用户就可以了。


3.打jar包
test.jar

    String iconpath = jar.getManifest().getMainAttributes().getValue("abc");
    InputStream in = jar.getInputStream(jar.getJarEntry(iconpath));
     //Image img = ImageIO.read(in);
    InputStreamReader isr =  new InputStreamReader(in);
    BufferedReader reader = new BufferedReader(isr);
    String line;
    while ((line = reader.readLine()) != null) {
          System.out.println(line);
    }
    reader.close();
 

 

  • Sample2,读取JAR 文件列表及各项的名称、大小和压缩后的大小

 

public class JarFileInfoRead {
 public static void main (String args[])  throws IOException {
  String jarpath="d://temp//test.jar";
  JarFile jarFile = new JarFile(jarpath);
  Enumeration enu = jarFile.entries();
  while (enu.hasMoreElements()) {
      process(enu.nextElement());
  }
}

private static void process(Object obj) {
    JarEntry entry = (JarEntry)obj;
    String name = entry.getName();
    long size = entry.getSize();
    long compressedSize = entry.getCompressedSize();
    System.out.println(name + "\t" + size + "\t" + compressedSize);
  }
}
 

 

  • Sample3,读取JAR中 文件的内容
public class JarFileRead {
    public static void main (String args[])
        throws IOException {
      String jarpath="d://temp//test.jar";
      JarFile jarFile = new JarFile(jarpath);
        Enumeration enu = jarFile.entries();
        while (enu.hasMoreElements()) {
         JarEntry entry = (JarEntry)enu.nextElement();
            String name = entry.getName();
            //System.out.println(name);
            if(name.equals("test/a.txt")){
            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();
    }
}
 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值