如何读取JAR包内文件,重分征求福音!!

eagerEagle 2007-03-18 11:52:40
我一直想把一些资源文件放到一个文件里面去,要用的时候去读取就是了,而且便于管理。听说有方法能够访问并读出JAR包里的文件,可是我查了很久都没找到有关信息……
我想一定能够做到的,因为可执行JAR文件应该就是这个原理吧:双击之后去清单MANIFEST.MF里面去找main方法所在的class文件,然后执行它。
请高人指点。
...全文
722 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
LexChen 2007-03-19
  • 打赏
  • 举报
回复
getClass().getResource(path)
getClass().getResourceAsStream(path)
path为jar包里面的相对路径,如在jar包里面的文件放在 /resources/image/a.jpg
andot 2007-03-19
  • 打赏
  • 举报
回复

final public class ResourceLoader {
public static byte[] getResource(String path) {
JarFile jarFile = new JarFile(URLDecoder.decode(ResourceLoader.class.getProtectionDomain().getCodeSource().getLocation().getFile()));
JarEntry entry = jarFile.getJarEntry(path);
byte[] data = new byte[(int)entry.getSize()];
BufferedInputStream in = new BufferedInputStream(jarFile.getInputStream(entry));
in.read(data);
in.close();
return data;
}
}

这样直接用 ResourceLoader.getResource(”data/data.dat”) 就可以读取 jar 文件中 data 目录下的 data.dat 文件了。这里静态方法 getResource 的 path 参数是相对于 Jar 文件来说的相对路径。
「已注销」 2007-03-19
  • 打赏
  • 举报
回复
1. java.util.jar.*
专门处理jar包相关的
2.如果主程序和文件资源在同一个jar包内
Class.forName("java.lang.Object").getResourceAsStream(String)
lixiaoxue85 2007-03-19
  • 打赏
  • 举报
回复
getClass().getResource("image?or txt?");
用IDE打成JAR包 自动生成MANIFAST文件 就可以调用了.如果LZ把JAR文件解压后,把文件放入再压缩的话 估计有点问题 JAR文件是个压缩文件 读取里面的资源应该没问题的
eagerEagle 2007-03-19
  • 打赏
  • 举报
回复
感谢 各位高人的指点!
我已经把分送送出
再次感谢
约翰羊 2007-03-19
  • 打赏
  • 举报
回复
关注
收藏
craig_wolfdon 2007-03-19
  • 打赏
  • 举报
回复
还有一种方法,直接把JAR包解压了看看里面的包的内容,然后把你要访问的类的哪个包包含进去就可以了,
比如jar解压以后有com目录下面有a.class
可以直接import com.*;
然后直接写调用的类的就可以了

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧