详解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资源的实例,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!