Properties类学习

1、定义

  • Properties,java.utils包下的一个工具类,主要用于读取Java的配置文件。各种语言都有自己所支持的配置文件,配置文件中很多变量是经常变动的。
  • 这样做也是为了方便用户,让用户能够脱离程序本身去修改相关的变量设置。

2、主要方法

它提供了几个主要的方法:

  1. getProperty(String key):用指定的键在属性列表中搜素属性。通过参数key,得到key所对应的value。
  2. load(InputStream input):从输入流中读取属性列表(键值对)。通过对指定的文件进行装载来获取该文件的所有键值对,以供getProperty(String key)方法来搜素。
  3. setProperty(String key, String value):调用Hashtable的put方法,通过调用基类的put方法来设置键值对。
  4. store(OutputStream out, String comments):以适合使用load方法加载到Properties表中的格式,将此Propertie表中的属性列表(键值对)写入输出流。与load方法相反,该方法将键值对写入到指定的文件中去。
  5. clear():清除所有装载的键值对。该方法在基类中提供。

3、注意

  • ResourceBundle 只读
  • Properties:可写可读

代码示例

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Properties; public class PropertiesDemo { private static String version;
private static String username;
private static String password; // 静态代码块,只会执行一次,类加载的时候就会执行
static {
// readConfig();
} // 写入配置文件
public static void writeConfig(String version, String username, String password) {
Properties p = new Properties(); p.put("app.version", version);
p.put("db.username", username);
p.put("db.password", password); try {
OutputStream outStream = new FileOutputStream("src/testio/conf.properties");
// 写文件
p.store(outStream, "update config");
outStream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}// writeConfig // 读取配置文件
public static void readConfig() {
Properties p = new Properties(); try {
// 由于这种方法需要写全路径(src)而发布时是没有src目录的,不推荐使用
// InputStream inStream = new FileInputStream("src/testio/conf.properties"); // 通过当前线程的类加载器对象,来加载指定包下的配置文件。
InputStream inStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("res/conf.properties");
p.load(inStream);// 加载文件 // 从文件中获取数据
version = p.getProperty("app.version");
username = p.getProperty("db.username");
password = p.getProperty("db.password"); inStream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}// readConf public static void main(String[] args) {
//writeConfig("88", "fei", "36521");
readConfig();
System.out.println("version = " + version + ";username = " + username + ";password = " + password);
}
}

用的配置文件名为conf.properties

文件内容如下:

db.password=36521

app.version=88

db.username=fei

Properties工具类学习的更多相关文章

  1. Java Properties工具类详解

    1.Java Properties工具类位于java.util.Properties,该工具类的使用极其简单方便.首先该类是继承自 Hashtable<Object,Object> 这就奠 ...

  2. java学习-加载.properties工具类

    javaWeb项目,要加载xxx.properties或其它如.txt, .md后缀的文本文件 文本内容有两种格式 key:value或者key=value 诸如Spring框架,Jfinal框架,都 ...

  3. java.util.Properties工具类

    import java.io.FileNotFoundException; import java.io.FileWriter; import java.io.IOException; import ...

  4. commons-lang3工具类学习(二)

    三.BooleanUtils 布尔工具类 and(boolean... array) 逻辑与 BooleanUtils.and(true, true)         = true    Boolea ...

  5. Java 中待总结工具类学习(自定义注解,读取配置,字面List)

    1.使用 MessageFormat 格式化文本 int planet = 7; String event = "a disturbance in the Force"; Stri ...

  6. commons-lang3工具类学习(三)

    六.ObjectUtils Object工具类 allNotNull(Object... values) 检查所有元素是否为空,返回一个boolean 如果有一个元素为空返回false,所有元素不为空 ...

  7. commons-lang3工具类学习(一)

    一.ArchUtils java运行环境的系统信息工具类 getArch();// 获取电脑处理器体系结构 32 bit.64 bit.unknown    getType();// 返回处理器类型 ...

  8. DBUtils工具类学习一

    Commons DbUtils是Apache组织提供的一个对JDBC进行简单封装的开源工具类库,使用它能够简化JDBC应用程序的开发,同时也不会影响程序的性能 1.特征 DBUtils是java编程中 ...

  9. commons-lang3工具类学习--------ObjectUtils

    Object工具类 allNotNull(Object... values) 检查所有元素是否为空,返回一个boolean 如果有一个元素为空返回false,所有元素不为空或元素为empty返回tru ...

随机推荐

  1. HY 的惩罚 (Trie 树,博弈论)

    [问题描述] hy 抄题解又被老师抓住了,现在老师把他叫到了办公室. 老师要 hy 和他玩一个游 戏.如果 hy 输了,老师就要把他开除信息组; 游戏分为 k 轮.在游戏开始之前,老师会将 n 个由英 ...

  2. 2019牛客暑期多校训练营(第六场)C - Palindrome Mouse (回文自动机)

    https://ac.nowcoder.com/acm/contest/886/C 题意: 给出一个串A , 集合S里面为A串的回文字串 , 现在在集合S里面找出多少对(a,b),b为a的字串 分析: ...

  3. HDU 6121 Build a tree(k叉树的子树大小相异)

    http://acm.hdu.edu.cn/showproblem.php?pid=6121 题目大意: 给你一颗 n 个节点的完全 k 叉树,问你这棵树中所有子树结点个数的总异或值. 分析: 我们很 ...

  4. jmeter常用组件简介

    本文主要介绍jmeter使用过程中最常用的一些组件及其作用.性能测试时线程组中可以添加如下的组件,如图所示: test plan:测试计划,是其它组件的容器 thread:线程组,用来设置多少线程,怎 ...

  5. js/jq 小功能函数

    1.点击复制内容到剪贴板 function copyToClip(str) { var save = function(e) { e.clipboardData.setData('text/plain ...

  6. EZOJ #389点分治好题

    分析 一层一层把叶子去掉 看最多能去掉多少层即可 代码 #include<bits/stdc++.h> using namespace std; ],du[],fa[],n,m,ans; ...

  7. 基于Apache搭建HTTP HTTPS

    参考资料 <openssl攻略>--第一章 <Apache服务器配置与使用工作笔记>-- 第六章 第十四章 https://juejin.im/post/5a31faf2518 ...

  8. 20190814 On Java8 第四章 运算符

    第四章 运算符 优先级 程序员经常都会忘记其他优先级规则,所以应该用括号明确规定运算顺序. 赋值 基本类型的赋值都是直接的,而不像对象,赋予的只是其内存的引用.举个例子,a = b ,如果 b 是基本 ...

  9. Fitness初接触

    http://www.fitnesse.org/FitNesseDownload 1. Click on the most recent fitnesse-standalone.jar file an ...

  10. [功能集锦] 003 - 一键生成mysql数据字典/数据库速查表

    写在前面: 因为工作时候经常遇到半路接手项目的情况,由于年代久远,数据库字典这块经常缺失.故写此篇,以便复用,也希望对大家有点帮助. 随笔内容不高级,如有不妥,不吝指正. ps:有另一篇详细随笔可以参 ...