l89669
我在jar中放置了assets/modname/File.png这么一个文件,如何在mod中读取它?
使用Modname.class..getResourceAsStream("assets/modname/File.png");这句会返回null值

IMENDERDRAGON
错了,应该是:类.class.getResourceAsStream(...);
getResourceAsStream()方法中括号内的路径前要加上"/",表示在这个类所在的包中读取文件,如果不加则表示是在这个类中的子目录中或者是同级目录中读取文件

l89669
IMENDERDRAGON 发表于 2017-7-19 19:53
错了,应该是:类.class.getResourceAsStream(...);
getResourceAsStream()方法中括号内的路径前要加上"/" ...

大佬可不可以举个例子讲解一下

耗子
Modname.class..getResourceAsStream("/assets/modname/File.png");

IMENDERDRAGON
l89669 发表于 2017-7-20 15:54
大佬可不可以举个例子讲解一下

第一:要加载的文件和.class文件在同一目录下,例如:com.x.y 下有类my.class ,同时有资源文件File.png
那么读取它就应该有如下代码:
ImageIO.read(my.class.getResourceAsStream("File.png"));
第二:在me.class目录的子目录下,例如:com.x.y 下有类my.class ,同时在 com.x.y.file 目录下有资源文件那么读取它就应该有如下代码:  
ImageIO.read(my.class.getResourceAsStream("file/File.png"));
第三:不在me.class目录下,也不在子目录下,例如:com.x.y 下有类my.class ,同时在 com.x.file 目录下有资源文件File.png
那么读取它就应该有如下代码:
mageIO.read(me.class.getResourceAsStream("/com/x/file/File.png"));

l89669
非常感谢两位的耐心细致的讲解,简直想送上爱心了QWQ

myq7663512
Mcbbs有你更精彩~

海螺螺
本帖最后由 754503921 于 2017-10-4 11:26 编辑
  1. URL url = new URL("jar:file:/"+modfile.getAbsolutePath()+"!/assets/modname.File.png");
  2. InputStream in = url.openStream();
复制代码


InputStream能干啥我觉得不用多说

在 PreInit 事件有一个 event.getSource() 可以获取 mod文件

下一页 最后一页