Java读取param里文件_Java中读取properties资源文件

本文介绍了Java中读取.properties配置文件的两种方法:通过ResourceBundle和getResourceAsStream。详细阐述了每种方法的使用场景和路径设置,并提供示例代码。同时,讨论了Java加载文件时的默认根目录问题。
摘要由CSDN通过智能技术生成

一、通过ResourceBundle来读取.properties文件

/**

* 通过java.util.resourceBundle来解析properties文件。

* @param String path:properties文件的路径

* @param String key: 获取对应key的属性

* @return String:返回对应key的属性,失败时候为空。

*/

public static String getPropertyByName1(String path,String key){

String result = null;

try {

result = ResourceBundle.getBundle(path).getString(key).trim();

} catch (Exception e) {

e.printStackTrace();

}

return result;

}

对于String path的填写,要注意。一般分为两种情况:

1、.properties文件在src目录下面,文件结构如下所示:

|src/

— —test.properties

2、.properties文件在src目录下面的一个包中,因为可能我们经常习惯把各种properties文件建立在一个包中。文件结构如下:

|src/

|— —configure/

|                            | — —test1.properties

|                            | — —test2.properties

对于第一种情况,在main函数中使用方法如下:

System.out.println(GetConfigureInfo.getPropertyByName1("test", "key1"));

对于第二种情况,在main函数中使用方法如下:

System.out.println(GetConfigureInfo.getPropertyByName1("configure.test1", "key1"));

这种用法下,path不用带.properties后缀,直接输入就好了。

二、通过getResourceAsStream方式加载.properties文件

/**

* 解析properties文件。

* @param String path:properties文件的路径

* @param String key: 获取对应key的属性

* @return String:返回对应key的属性,失败时候为null。

*/

public String getPropertyByName2(String path,String key){

String result = null;

Properties properties = new Properties();

try {

InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(path);

if(inputStream == null){

properties.load(inputStream);

result = properties.getProperty(key).trim();

inputStream.close();

}

} catch (Exception e) {

e.printStackTrace();

}

return result;

}

同样两种情况:

1、.properties文件在src目录下面

使用方法是:

GetConfigureInfo getConfigureInfo = new GetConfigureInfo();

System.out.println(getConfigureInfo.getPropertyByName2("test1.properties", "key1"));

2、.properties文件在src目录下面的一个包中:

使用方法:

GetConfigureInfo getConfigureInfo = new GetConfigureInfo();

System.out.println(getConfigureInfo.getPropertyByName2("configure/test1.properties", "key1"));

可以看到很明显的这种类似于文件的读写,所以用法有所不同了都。

三、使用FileOutputStream和Propertity写入test.properties文件:

/**

* 写入.properties文件, key=content

* @param String path:写入文件路径

* @param String key:写入的key

* @param String content:写入的key的对应内容

* @return void

*/

public void setProperty(String path,String key,String content){

Properties properties = new Properties();

try {

properties.setProperty(key, content);

//true表示追加。

if((new File(path)).exists()){

FileOutputStream fileOutputStream = new FileOutputStream(path, true);

properties.store(fileOutputStream, "just for a test of write");

System.out.println("Write done");

fileOutputStream.close();

}

} catch (Exception e) {

e.printStackTrace();

}

}

使用方式:

GetConfigureInfo getConfigureInfo = new GetConfigureInfo();

getConfigureInfo.setProperty("src/testConfig.properties", "test3", "test3 value");

值得注意的是,现在这个函数里面的path居然加了src/,因为是用FileOutputStream,所以默认的主路径是项目路径。

总结:

对于Java而言,我觉得这些路径就搞得很不合理的样子,现在看来,使用输入输出流读写文件时候,似乎主路径都是在项目下。

而对于ResourceBundle读取properties文件的路径不加.properties也很奇特啊。似乎java中各种不同方式来加载文件时候都有默认的主路径(也可以说成根目录)

根目录也就决定了这个路径到底应该怎么写,才能被程序识别。我现在还不得而知,先记录下这些区别。

如果大家有什么想指正、教育我的地方,欢迎指出,小弟想知道到底是怎么样子的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值