100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > ResourceBundle读取properties文件

ResourceBundle读取properties文件

时间:2023-12-16 19:58:47

相关推荐

ResourceBundle读取properties文件

ResourceBundle读取properties文件

集成开发工具:IDEA

下面是一个名为db.properties的文件的内容

driver=com.mysql.jdbc.Driverurl=jdbc:mysql://localhost:3306/db?useSSL=true&useUnicode=true&characterEncoding=utf8username=rootpassword=pwd

Java中可以使用 java.util 包下的 ResourceBundle 读取这个文件,读取的方法很简单:

一、得到关于这个配置文件的ResourceBundle对象

二、使用ResourceBundle类的 getString(key) 方法读取信息

ResourceBundle对象的获取

1、使用 ResourceBundle.getBundle() 方法,就像下面这样

ResourceBundle db = ResourceBundle.getBundle("db");

使用这种方式,getBundle() 的参数不需要带路径,也不需要带扩展名,但是 db.properties 文件必须在被标记为Resource Root的文件夹之下

2、使用new PropertyResourceBundle(),构造器的参数可以是一个 InputStream 或一个 Reader ,例如下面这样:

//filepath指db.properties的文件路径,可以是相对路径,也可以是绝对路径InputStream in = new FileInputStream(filepath);ResourceBundle db = new PropertyResourceBundle(in);

或者这样:

FileReader reader = new FileReader(filepath);ResourceBundle db = new PropertyResourceBundle(reader);

甚至这样:

BufferedReader reader = new BufferedReader(new FileReader(filepath));ResourceBundle db = new PropertyResourceBundle(reader);

使用这种方式,filepath 没有任何限制,可以在文件系统的任何位置,如果filepath不在当前项目下,则必须使用绝对路径,否则可以使用相对路径,相对路径以当前项目位置为根目录,可以不以 / 开头(以 / 开头也没有问题),

信息的读取

获得 ResourceBundle 对象之后,就可以读取db.properties 中的信息了,例如下面这样:

System.out.println(db.getString("driver"));System.out.println(db.getString("url"));System.out.println(db.getString("username"));System.out.println(db.getString("password"));

附上完整的测试用例:

import org.junit.Test;import java.io.*;import java.util.PropertyResourceBundle;import java.util.ResourceBundle;public class Main {@Testpublic void getResource() {ResourceBundle db = ResourceBundle.getBundle("db");System.out.println(db.getString("driver"));System.out.println(db.getString("url"));System.out.println(db.getString("username"));System.out.println(db.getString("password"));}@Testpublic void getResource2() throws IOException {InputStream in = new FileInputStream("W:/db.properties");ResourceBundle db = new PropertyResourceBundle(in);System.out.println(db.getString("driver"));System.out.println(db.getString("url"));System.out.println(db.getString("username"));System.out.println(db.getString("password"));}@Testpublic void getResource3() throws IOException {FileReader reader = new FileReader("/db.properties");ResourceBundle db = new PropertyResourceBundle(reader);System.out.println(db.getString("driver"));System.out.println(db.getString("url"));System.out.println(db.getString("username"));System.out.println(db.getString("password"));}@Testpublic void getResource4() throws IOException {BufferedReader reader = new BufferedReader(new FileReader("src/main/resources/db.properties"));ResourceBundle db = new PropertyResourceBundle(reader);System.out.println(db.getString("driver"));System.out.println(db.getString("url"));System.out.println(db.getString("username"));System.out.println(db.getString("password"));}}

若要使用Test注解进行单元测试,需要导入junit包,具体方法参见:使用junit进行最简单的单元测试

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。