aib*_*aib 2 java jar classpath classloader
我正在尝试让我的应用程序透明地加载资源(二进制文件):
如果该文件存在于当前目录下,请将其打开.
如果没有,请尝试查看当前的JAR文件(如果适用).
如果没有,请尝试查看其他JAR文件.(这是可选的,我不介意明确指定哪些JAR文件.)
到目前为止,我知道File哪个打开一个本地文件,ClassLoader哪个有getResource*JAR内容.
是否有一个结合了两者的课程?如果没有,我该如何自己写呢?我应该写一个ClassLoader也检查本地文件系统?用File?(我对Java非常熟悉,甚至不知道返回什么样的好类型.InputStream?)
谢谢
PS"文件"我的意思是"路径",例如"data/texture1.png".
做#1和#3非常简单.做#2(仅查看当前的JAR)要困难得多,因为它需要你弄清楚你是什么JAR
如果你想首先检查文件系统,否则从类路径加载,它将是这样的:
public java.io.InputStream loadByName(String name) {
java.io.File f = new java.io.File(name);
if (f.isFile()) {
return new FileInputStream(f);
} else {
return getClass().getResource(name);
}
}
Run Code Online (Sandbox Code Playgroud)
如果您希望首先从同一个JAR文件加载,则需要确定它的位置.检查确定类所属的JAR文件,以获取有关确定要从中加载资源的JAR文件的更多信息.
| 归档时间: |
|
| 查看次数: |
2460 次 |
| 最近记录: |