java资源文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java资源文件相关的知识,希望对你有一定的参考价值。

今天做一个练习,涉及到java资源文件的内容,因为之前完全没有接触过,所以请教下前辈,什么事资源文件?资源文件有什么作用?如何创建资源文件?如何使用资源文件?
希望可以详细一点,有好的资料链接也可以,谢谢!

(一)用Class类加载资源文件

  通过调用Class类的getResourceAsStream方法来加载资源文件:

  public InputStream getResourceAsStream(String pathToConfigFile);

  该方法接收一个String类型的参数(pathToConfigFile)来表示资源文件的地址,如果加载成功,则返回该资源文件的输入流(InputStream),如果失败,则返回null。重要的是,在传入pathToConfigFile参数时,有两种方式,第一种方式为绝对定位方式,即pathToConfigFile以"/"开头,此时Java以classpath为根目录,直接加上pathToConfigFile来搜索资源文件。第二种方式为相对定位方式,即pathToConfigFile不以"/"开头,此时资源文件的全路径应该为:调用getResourceAsStream方法的类的package路径加上pathToConfigFile。(在将package转为目录时将"."变成"/")

举个例子,在IntelliJ Idea中创建一个java工程,目录结构如下:

该工程里有两个resources文件夹,一个位于davenkin文件夹下,一个直接位于src文件夹下。第一个resources文件夹下有一个config.properties文件,其内容为:

name = ConfigUnderDavenkin

 第二个resources文件夹下也有一个config.properties文件,其内容为:

name = ConfigUnderSrc
参考技术A 属性文件指properties文件

在IDE里新建一个file后缀改为.properties就创建了一个属性文件

属性文件结构:
test1=aaa
test2=bbb
Ps:中文的话请使用unicode表示

有很多种读取属性文件的方式,我举例其中的一种:

//构造器内的路径为src文件夹下的*.properties文件
//假设在src文件夹下放置了属性文件a.properties
ResourceBundle rb = ResourceBundle.getBundle("a");
String str = rb.getString("test1");

此时str的值为属性文件中test1对应的值本回答被提问者采纳
参考技术B properties文件 嘛?追问

好像是的

参考技术C 后缀名为.properties的文件

Java 获取资源文件路径

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资源文件的主要内容,如果未能解决你的问题,请参考以下文章

(转)java 从jar包中读取资源文件

在 java 文件中使用 MonoDroid 生成的资源?

Java资源管理器中树形文件目录的路径取得问题

Java IO流 之 ResourceBundle 读取国际化资源文件

使用Java原生支持读取资源配置文件

Java 获取资源文件路径