java开放文件;首先尝试文件系统,然后尝试JARs
我试图让我的应用程序透明地加载资源(二进制文件):
如果文件存在于当前目录下,请将其打开
如果没有,请尝试查看当前的JAR文件(如果适用)
如果没有,请尝试查找其他JAR文件。(这是可选的,我不介意明确指定哪些JAR文件。)
到目前为止,我知道File
可以打开一个本地文件,而ClassLoader
可以getResource*
存储JAR内容
有一个结合了这两者的课程吗?如果没有,我该如何着手自己写呢?我应该写一个ClassLoader
也检查本地文件系统吗?使用File
?(我对Java非常不熟悉,甚至不知道返回哪种类型好。)
谢谢
注意,“文件”指的是“路径”,例如“data/texture1.png”
# 1 楼答案
当前jar文件和当前目录在JVM中不是像运行shell脚本时那样的概念。您需要指定一个目录,用于加载感兴趣的文件,例如在执行JVM时使用系统属性:
然后检索此属性:
现在,当谈到JAR文件时,启动JVM时在类路径上显式指定的所有JAR文件都由类加载器加载。您可以通过以下方式获取特定类的类加载器:
注意,当前类加载器加载的任何jar文件都会被搜索
# 2 楼答案
如果文件路径位于jar前面的类路径上,那么URLClassLoader应该能够同时加载这两个文件,并首先尝试文件路径
关于你的评论: