详解Java读取Jar中资源文件及示例代码
详解Java读取Jar中资源文件及实现代码
直接上代码,文章的注释部分说的比较清楚,大家可以参考下,
工具类源代码:ResourceLoadFromJarUtil.java
实现代码:
importjava.io.IOException; importjava.io.InputStream; importjava.net.JarURLConnection; importjava.net.MalformedURLException; importjava.net.URL; importjava.util.jar.JarEntry; importjava.util.jar.JarFile; importorg.apache.commons.io.IOUtils; publicclassResourceLoadFromJarUtil{ /** *@paramargs *@throwsIOException */ publicstaticvoidmain(String[]args)throwsIOException{ /*资源文件路径,不能以'/'字符字符开头*/ StringresourcePath="struts-plugin.xml"; /*获取ClassPath下的所有jar路径*/ String[]cps=System.getProperty("java.class.path").split(";"); /*读取本地Jar文件*/ for(Stringcp:cps){ if(!cp.endsWith(".jar")){ continue; } InputStreamin=loadResourceFromJarFile(cp,resourcePath); if(in!=null){ System.err.println(IOUtils.toString(in)); in.close(); } } /*读取本地Jar文件*/ for(Stringcp:cps){ if(!cp.endsWith(".jar")){ continue; } InputStreamin=loadResourceFromJarURL(cp,resourcePath); if(in!=null){ System.err.println(IOUtils.toString(in)); in.close(); } } /*读取网络Jar文件*/ InputStreamin=loadResourceFromJarURL( "http://localhost:8080/SpringStruts2Integration/struts2-spring-plugin-2.3.4.1.jar",resourcePath); if(in!=null){ System.err.println(IOUtils.toString(in)); in.close(); } } /** *读取Jar文件中的资源 * *@paramjarPath *本地jar文件路径 *@paramresPath *资源文件所在jar中的路径(不能以'/'字符开头) *@return如果资源加载失败,返回null */ publicstaticInputStreamloadResourceFromJarFile(StringjarPath,StringresPath){ if(!jarPath.endsWith(".jar")){ returnnull; } try{ JarFilejarFile=newJarFile(jarPath); JarEntryjarEntry=jarFile.getJarEntry(resPath); if(jarEntry==null){ returnnull; } returnjarFile.getInputStream(jarEntry); }catch(IOExceptione){ e.printStackTrace(); returnnull; } } /** *读取Jar文件中的资源 * *@paramjarUrl *本地jar文件或网络上(ttp://host:port/subpath/jarfile.jar)jar文件路径 *@paramresPath *资源文件所在jar中的路径(不能以'/'字符开头) *@return如果资源加载失败,返回null */ publicstaticInputStreamloadResourceFromJarURL(StringjarUrl,StringresPath){ if(!jarUrl.endsWith(".jar")){ returnnull; } URLurl=null; if(jarUrl.startsWith("http://")){ try{ url=newURL("jar:"+jarUrl+"!/"); }catch(MalformedURLExceptione){ e.printStackTrace(); returnnull; } }else{ try{ url=newURL("jar:file:/"+jarUrl+"!/"); }catch(MalformedURLExceptione){ e.printStackTrace(); returnnull; } } try{ JarURLConnectionjarURLConnection; jarURLConnection=(JarURLConnection)url.openConnection(); JarFilejarFile=jarURLConnection.getJarFile(); JarEntryjarEntry=jarFile.getJarEntry(resPath); if(jarEntry==null){ returnnull; } returnjarFile.getInputStream(jarEntry); }catch(IOExceptione){ e.printStackTrace(); returnnull; } } }
以上就是对java读取jar资源的实例,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!