码迷,mamicode.com
首页 > 编程语言 > 详细

Java 获取资源文件路径

时间:2020-07-04 01:32:32      阅读:70      评论:0      收藏:0      [点我收藏+]

标签:系统   png   tst   null   blog   有一个   code   wing   zoom   

1 问题描述

通过源码运行时,一般使用如下方式读取资源文件:

String str = "1.jpg";

资源文件与源码文件放在同一目录下,或者拥有同一父级目录:

String str = "a/b/1.jpg";

这样直接编译运行没有问题,但是打成JAR包后会读取不了,直接抛空指针异常。

2 解决办法

使用URL或者InputStream进行读取:

URL url = getClass().getClassLoader().getResource("a/b/1.jpg");
InputStream inputStream = getClass().getClassLoader().getResourceAsStream("a/b/1.png");

注意不能在路径前加/

URL url = getClass().getClassLoader().getResource("/a/b/1.jpg");
InputStream inputStream = getClass().getClassLoader().getResourceAsStream("/a/b/1.png");

这样读取出来是null

getClass().getClassLoader().getResource()从源码运行的URL如下:

技术图片

从JAR包运行的URL如下:

技术图片

测试系统Win10,从源码运行的话有一个file:前缀,而从JAR包运行有一个jar:file:前缀。

前缀一般没有影响,一般都能直接通过URL获取文件,比如在SwingJFrame中设置图标:

mainFrame.setIconImage(new ImageIcon(getClass().getClassLoader().getResource("image/icon.png")).getImage());

如果只能通过String处理路径,需要把前缀file:或者jar:file:去掉,JAR的话可以结合JarFile类读取文件。

 
来源:锌媒体

Java 获取资源文件路径

标签:系统   png   tst   null   blog   有一个   code   wing   zoom   

原文地址:https://www.cnblogs.com/1994july/p/13233198.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!