一、通过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中各种不同方式来加载文件时候都有默认的主路径(也可以说成根目录)

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

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

Java中读取properties资源文件的更多相关文章

  1. 五种方式让你在java中读取properties文件内容不再是难题

    一.背景 最近,在项目开发的过程中,遇到需要在properties文件中定义一些自定义的变量,以供java程序动态的读取,修改变量,不再需要修改代码的问题.就借此机会把Spring+SpringMVC ...

  2. 在服务端中,读取properties资源文件中的数据

    1.获取到资源的路径 2.读取数据 //properties文件对象 Properties properties = new Properties(); //通过HttpServletRequest ...

  3. Java项目读取resources资源文件路径那点事

    今天在Java程序中读取resources资源下的文件,由于对Java结构了解不透彻,遇到很多坑.正常在Java工程中读取某路径下的文件时,可以采用绝对路径和相对路径,绝对路径没什么好说的,相对路径, ...

  4. Java中读取.properties配置文件的通用类

    由于Java中读取配置文件的代码比较固定,所以可以将读取配置文件的那部分功能单独作为一个类,以后可以复用.为了能够达到复用的目的,不能由配置文件中每一个属性生成一个函数去读取,我们需要一种通用的方法读 ...

  5. Java中读取 .properties 和 .xml 文件

    配置文件内容获取 总结内容 1. Java中为什么要使用配置文件 2. Java中常用的配置文件类型有哪些以及它们的特点 Properties配置文件 XML配置文件 总结 总结内容 1. Java中 ...

  6. Spring读取properties资源文件

    我们知道可以通过读取资源文件流后加载到Properties对象,再使用该对象方法来获取资源文件.现在介绍下利用Spring内置对象来读取资源文件. 系统启动时加载资源文件链路:web.xml --&g ...

  7. 2018-10-10 在浏览器插件中读取JSON资源文件

    续前文: 浏览器插件实现GitHub代码翻译原型演示 此改进只为演示: 词典数据提取到json文件 · program-in-chinese/webextension_github_code_tran ...

  8. 六种方式读取properties资源文件

    conf.properties文件内容: reportStationName=xx供电局 JBM=0318 文件路径: 其中xxx为项目名 import java.io.BufferedInputSt ...

  9. spring mvc读取properties资源文件夹中文乱码问题

    通过在applicationContext.xml和springmvc.xml中配置 <bean        class="org.springframework.beans.fac ...

随机推荐

  1. percona-toolkit介绍及安装

    percona-toolkit是一组高级命令行工具的集合,用来执行各种通过手工执行非常复杂和麻烦的mysql和系统任务,包括: 1. 检查master和slave数据的一致性 2. 有效地 ...

  2. POI中getLastRowNum() 和getLastCellNum()的区别 hssfSheet.getLastRowNum();//最后一行行标,比行数小1 hssfSheet.getRow(k).getLastCellNum();//获取列数,比最后一列列标大1

    hssfSheet.getLastRowNum();//最后一行行标,比行数小1 hssfSheet.getRow(k).getLastCellNum();//获取列数,比最后一列列标大1

  3. 克隆复制可使用原型( Prototype)设计模式

    今天有学习设计模式的原型(Prototype)<设计模式--原型(Prototype)模式>http://www.cnblogs.com/insus/p/4152773.html .为了加 ...

  4. 消灭Bug!18款最佳的问题跟踪管理应用程序

    摘要:工欲善其事,必先利其器,对于开发者来说,处理Bug是一件比较头疼的事,那么如何高效地解决Bug,选择一款合适的Bug跟踪处理工具会让你事半功倍. 对于开发者来说,Bug往往是他们最头疼的问题.有 ...

  5. C#中ListView的简单使用方法

    ListView是用于显示数据的,先在窗体中拉一个lisview控件,还有一些新增.修改.删除.查询按钮和文本框,控件名称为listview,按钮为btnInsert,btnUpate,btnDele ...

  6. ActiveReports 报表应用教程 (5)---解密电子商务领域首张电子发票的诞生(套打报表)

    6月27日京东商城发布了中国电子商务领域首张电子发票,同时宣布相关系统正式上线,这标志着中国电子商务的步伐又向前迈出了重要的一步.目前“电子发票”覆盖的服务范围是在北京地区购买图书.音像商品的个人消费 ...

  7. Studio for ASP.NET Wijmo:使用 C1Pager 对 DataList 控件分页

    Studio for ASP.NET Wijmo 控件值得称赞的一点是它不仅仅单独为 C1 控件而开发.还可以配合其他控件使用,也正体现了C1控件为提高开发人员工作效率而设计的宗旨.简单的举一个例子, ...

  8. X3DOM新增剪裁平面节点ClipPlane支持

    裁剪平面由方程Ax+By+Cz+D=0确定.所有满足[A B C D]M-1[Xe Ye Ze We]T>0的人眼坐标[Xe Ye Ze We]的点都位于该平面定义的半空间中,而该半空间以外的所 ...

  9. (旧)子数涵数·C语言——条件语句

    首先,我们讲一下理论知识,在编程中有三种结构,分别是顺序结构.条件结构.循环结构,如果用流程图来表示的话就是: 那么在C语言中,如何灵活运用这三种结构呢?这就需要用到控制语句了. 而条件语句便是控制语 ...

  10. 关联规则-R语言实现

    关联规则code{white-space: pre;} pre:not([class]) { background-color: white; }if (window.hljs && ...