参考来自:http://www.cnblogs.com/s3189454231s/p/5626557.html

关于路径的解释:http://blog.csdn.net/bluishglc/article/details/38753047

官方文档:http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html#getResourceAsStream%28java.lang.String%29

0 获取InputStream的几种方式

项目结构:

 //PropertiesWay.class.getResourceAsStream()最终调用是ClassLoader.getResourceAsStream()
1 InputStream inStream1 = PropertiesWay.class.getClassLoader().getResourceAsStream("../resource/test.properties");
InputStream inStream2 = ClassLoader.getSystemResourceAsStream("com/lyh/resource/test.properties");
InputStream inStream3 = new FileInputStream(new File("E:/lyh/file/workspace/ReadPropertiesFile/src/com/lyh/resource/test.properties"));
//servlet环境下还可以用context
//InputStream inStream4 = context.getResourceAsStream("/WEB-INF/config/login.conf");
//InputStream in = context.getResourceAsStream("filePath"); ////通过url获取
//URL url = new URL("path");
//InputStream inStream5 = url.openStream();

关于类名.class.getClassLoader.getSystemResourceAsStreamClassLoader.getSystemResourceAsStream中,路径的解释可以参考:http://blog.csdn.net/bluishglc/article/details/38753047

简而言之就是:

类名.class.getClassLoader.getSystemResourceAsStream(path)中填写的path:以这个类的所在路径(这里是com.lyh.test)为基础。

ClassLoader.getSystemResourceAsStream(path)中填写的path:以classpath的路径(这里是src)为基础。

最重要的是:这里全是相对路径,所以开头不要加“/”。

如果不确定当前的classpath路径,可以通过如下代码获取:

 PropertiesWay.class.getClassLoader().getResource("").toString();

1 通过jdk提供的java.util.Properties类

在操作之前,首先要读取配置文件,有两种方式:load和loadFromXML。

1.1 load

load有两个方法的重载:load(InputStream inStream)、load(Reader reader),所以,可根据不同的方式来加载属性文件。

1.1.1 load(InputStream inStream)

1 p.load(inStream);
2 System.out.println(p.getProperty("name"));
3 p.setProperty("name", "inStream changed");

1.1.2 load(Reader reader)

1.2 loadFromXML

2.通过java.util.ResourceBundle类读取

2.1 通过ResourceBundle.getBundle()

ResourceBundle是一个抽象类,这种方式来获取properties属性文件不需要加.properties后缀名,只需要文件名即可。

 ResourceBundle resource = ResourceBundle.getBundle("com/mmq/test");//test为属性文件名,放在包com.mmq下,如果是放在src下,直接用test即可
2 String key = resource.getString("username");

2.2 从InputStream中读取

获取inputStream的方法和前面load中介绍的一样。

 ResourceBundle resource = new PropertyResourceBundle(inStream); 
2 String key = resource.getString("username");

2017.6.29 java读取.properties配置文件的几种方法的更多相关文章

  1. java读取.properties配置文件的几种方法

    读取.properties配置文件在实际的开发中使用的很多,总结了一下,有以下几种方法(仅仅是我知道的):一.通过jdk提供的java.util.Properties类.此类继承自java.util. ...

  2. 【转载】java读取.properties配置文件的几种方法

    读取.properties配置文件在实际的开发中使用的很多,总结了一下,有以下几种方法(仅仅是我知道的):一.通过jdk提供的java.util.Properties类.此类继承自java.util. ...

  3. java分享第十六天( java读取properties文件的几种方法&java配置文件持久化:static块的作用)

     java读取properties文件的几种方法一.项目中经常会需要读取配置文件(properties文件),因此读取方法总结如下: 1.通过java.util.Properties读取Propert ...

  4. Java 读取 .properties 配置文件的几种方式

    Java 开发中,需要将一些易变的配置参数放置再 XML 配置文件或者 properties 配置文件中.然而 XML 配置文件需要通过 DOM 或 SAX 方式解析,而读取 properties 配 ...

  5. Java 读取properties 配置文件的几种方式

    基于ClassLoder读取配置文件 Properties properties = new Properties(); // 使用ClassLoader加载properties配置文件生成对应的输入 ...

  6. java读取properties文件的几种方法

    一.项目中经常会需要读取配置文件(properties文件),因此读取方法总结如下: 1.通过java.util.Properties读取 Properties p=new Properties(); ...

  7. Java 读取 .properties 文件的几种方式

    Java 读取 .properties 配置文件的几种方式   Java 开发中,需要将一些易变的配置参数放置再 XML 配置文件或者 properties 配置文件中.然而 XML 配置文件需要通过 ...

  8. java读取properties配置文件总结

    java读取properties配置文件总结 在日常项目开发和学习中,我们不免会经常用到.propeties配置文件,例如数据库c3p0连接池的配置等.而我们经常读取配置文件的方法有以下两种: (1) ...

  9. Java 读取clob字段的几种方法

    Java 读取clob字段的几种方法 一.第一种 Clob clob = rs.getClob("remark");//Java.sql.Clob String detailinf ...

随机推荐

  1. 【CZY选讲·黑白染色】

    题目描述 给出平面上n 个点,试将他们黑白染色,要求染色后无法用一条直线把黑白完全分开. 随便输出一种方案. 数据范围 n<=100000 题解:       ①点数很多,但是可以发现至多需 ...

  2. 【BZOJ 5000 OI树】

    Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 107  Solved: 64[Submit][Status][Discuss] Description ...

  3. yii2.0查询慢的原因

    最近使用Yii2.0来搭建项目,测试的时候发现无论是请求列表数据还是发布数据,都很慢,然后我一步一步打印时间来查看哪里的问题,始终找不到原因,最后在网上看到这篇: 'db' => [ 'clas ...

  4. 转:Java SoftReference 使用构建对象缓存

    本文介绍对象的强.软.弱和虚引用的概念.应用及其在UML中的表示. 1.对象的强.软.弱和虚引用   在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象.也就是说, ...

  5. Mysql大数据备份及恢复

    <p>[引自攀岩人生的博客]MySQL备份一般采取全库备份.日志备份;MySQL出现故障后可以使用全备份和日志备份将数据恢复到最后一个二进制日志备份前的任意位置或时间;mysql的二进制日 ...

  6. Mac下jdk多版本管理

    网上试了.bash_profile中增加路径设置别名的方法,但是始终无法切换,只能使用jenv了. 1. 下载 jenv(来自官网) git clone https://github.com/gcui ...

  7. 数据库--MyBatis的(insert,update,delete)三种批量操作

    转自:http://blog.csdn.net/starywx/article/details/23268465 前段时间由于项目赶期没顾上开发过程中的性能问题,现对部分代码进行优化的过程中发现在数据 ...

  8. RobotFramework自动化2-自定义关键字【转载】

    本篇转自博客:上海-悠悠 原文地址:http://www.cnblogs.com/yoyoketang/tag/robotframework/ 前言 有时候一个页面上有多个对象需要操作,如果一个个去定 ...

  9. AC日记——[HAOI2007]覆盖问题 bzoj 1052

    1052 思路: 二分答案: 二分可能的长度: 然后递归判断长度是否可行: 先求出刚好覆盖所有点的矩形: 可行的第一个正方形在矩形的一个角上: 枚举四个角上的正方形,然后删去点: 删去一个正方形后,递 ...

  10. react 如何处理页面加载时无法将获取缓存信息存入全局变量中

    最近在做一个权限功能时,发现在读取用户公司ID进行列表查询 时,无法钭读取到缓存中的数据存入页面全局变量中进行加载查询 将问题代码整理出来 将信息存入缓存: let menuList = Helper ...