根据资源路径加载ZIP压缩包中指定的资源
来源:互联网 发布:mac word转pdf原页面 编辑:程序博客网 时间:2024/05/23 13:03
JAR、WAR、EAR、在文件结构上,三者并没有什么不同,它们都采用ZIP或JAR档案文件压缩格式。针对ZIP压缩文档中的类文件或者配置文件,如何根据该资源路径就能直接加载到其文件流呢? Java.util.zip包中的ZipFile类和ZipEntry类两者结合即可根据资源的路径加载到其对应的文件流。
/**
*GetInputStreambyzipentry name from specifiedjarfile.
*/
public InputStream getInputStreamFromEntry(String jarFile, String entryName) {
ZipFile zf = new ZipFile(jarFile);
ZipEntry ze = zf.getEntry(entryName);
return zf.getInputStream(ze);
}
注意,用来确定每个资源的名字是压缩文档中资源的实际路径名,而不是包(package)中类的名字。也就是说,java.util.zip包中的ZipEntry类的名字应为“java/util/zip/ZipEntry”,而不是”java.util.zip.ZipEntry”。事实上,Class类中的getResourceAsStream方法中即将类的全限定名中“.”全部替换成“/”构成资源的路径。
/**
*Addapackagenameprefixif the nameisnotabsoluteRemoveleading“/”
*ifnameisabsolute
*/
private StringresolveName(String name) {
if (name ==null) {
return name;
}
if (!name.startsWith(“/”)) {
Class c = this;
while (c.isArray()) {
c = c.getComponentType();
}
String baseName = c.getName();
int index = baseName.lastIndexOf(‘.’);
if (index != -1) {
name = baseName.substring(0, index).replace(‘.’,‘/’)
+“/”+name;
}
} else {
name = name.substring(1);
}
return name;
}
方法含义很简单
- 对于不是以“/”开头的参数,就认为这个路径是相对于当前类的路径,所以加载当前包中的资源只要写资源文件的名字就可以了。方法最大的一块代码就是为了得到当前类的路径,然后和传进来的相对路径参数拼起来,作为资源文件的绝对路径丢给CL。
- 对于以“/”开头的参数,就认为参数是资源文件的绝对路径,将这个斜线去掉之后,丢给CL去加载就行了。
- 根据资源路径加载ZIP压缩包中指定的资源
- 根据资源路径加载ZIP压缩包中指定的资源
- Duilib从Zip加载资源
- Unity3d外部加载音频,视频,图片等资源 及根据路径获取制定格式的文件
- 函数:FindResource 确定指定模块中指定类型和名称的资源所在位置
- Python学习—— 导出SVN中指定版本后增加的资源
- Android 根据资源压缩Bitmap
- java包资源路径
- 资源加载路径问题
- Eclipse3.2/3.3中指定第三方包(JAR)和类路径(CLASSPATH)的几个方法
- Eclipse3.2/3.3中指定第三方包(JAR)和类路径(CLASSPATH)的几个方法
- Eclipse中指定第三方包JAR和类路径CLASSPATH的几个方法
- makefile 中指定程序运行时加载的库文件路径
- jar包下的资源路径问题
- Spring的资源加载路径列表
- 使用ClassLoader加载包内的资源
- 使用ClassLoader加载包内的资源
- 根据key删除数组中指定的元素
- 程序员在线工具
- c++中 动态联编,静态联编和虚函数
- 总结Android四大组件是什么,分别简要说明功能。
- 使用ClassLoader加载包内的资源
- 上班族训练安排。
- 根据资源路径加载ZIP压缩包中指定的资源
- 执行shell脚本错误
- SDUT 1488 数据结构实验:连通分量个数
- MFC中ASSERT()和VERIFY()区别
- Random用法及常用方法总结
- Java多线程----java 对象锁
- JQuery(3)
- Android术语的名词解释
- Ghost