读取jar包MANIFEST.MF文件

public  final  class  ManifestUtils { 
 
     private  static  final String MANIFEST_DIRECTORY_LOCATION =  "META-INF" + File.separator +  "MANIFEST.MF"
 
     private  static  final String MANIFEST_ENTRY =  "META-INF/MANIFEST.MF"
 
     /**
     * Creates a {@link Reader} for the manifest in the supplied exploded JAR directory. 
     *  
     * @param directory the exploded JAR directory. 
     * @return the <code>Reader</code> or <code>null</code> if the manifest cannot be found. 
     */ 
     public  static  final Reader  manifestReaderFromExplodedDirectory(File directory) { 
         if (directory ==  null || !directory.isDirectory()) { 
             throw  new IllegalArgumentException( "Must supply a valid directory"); 
        } 
         try { 
            File manifestFile =  new File(directory.getAbsolutePath() + File.separator + MANIFEST_DIRECTORY_LOCATION); 
             if (manifestFile.exists()) { 
                 return  new FileReader(manifestFile); 
            }  else { 
                 return  null
            } 
        }  catch (IOException e) { 
             throw  new RuntimeException( "Unable to read MANIFEST for exploded directory '" + directory.getAbsolutePath() +  "'.", e); 
        } 
    } 
 
     /**
     * Creates a {@link Reader} for the manifest in the supplied JAR file. 
     *  
     * @param file the JAR file. 
     * @return the <code>Reader</code> or <code>null</code> if the manifest cannot be found. 
     */ 
     public  static  final Reader  manifestReaderFromJar(File file) { 
        JarFile jar =  null
         try { 
            jar =  new JarFile(file); 
            JarEntry entry = jar.getJarEntry(MANIFEST_ENTRY); 
             if (entry !=  null) { 
                StringWriter writer =  new StringWriter(); 
                FileCopyUtils.copy( new InputStreamReader(jar.getInputStream(entry)), writer); 
                jar.close(); 
                 return  new StringReader(writer.toString()); 
            }  else { 
                 return  null
            } 
        }  catch (Exception e) { 
             throw  new RuntimeException( "Cannot read MANIFEST.MF from jar '" + file.getAbsolutePath() +  "'.", e); 
        }  finally { 
             if (jar !=  null) { 
                 try { 
                    jar.close(); 
                }  catch (IOException ioe) { 
                     throw  new RuntimeException( "Failed to close jar '" + file.getAbsolutePath() +  "'.", ioe); 
                } 
            } 
        } 
    } 
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值