通常将系统相关的配置和属性,例如数据库、缓存等写在properties文件中,方便管理和维护。参考JDK7中的Properties类,学着进行了一些对properties文件的操作,总结一下,留存以后查看。
Properties 类说明
- Properties 类表示了一个持久的属性集。
- Properties可保存在流中或从流中加载。
- 属性列表中每个键及其对应值都是一个字符串。
- Properties继承于Hashtable。
文件所在目录:
- /config/config.properties
- /src/com/OperateProperties.java
properties件内容
http.host=127.0.0.1
http.port=8080
方法说明
- 读取properties文件
InputStream in = new FileInputStream(filePath);
Properties properties = new Properties();
properties.load(in);
- 根据key获取value
String host = properties.getProperty("http.host");
- 获取所有内容
Enumeration en = properties.propertyNames();
while (en.hasMoreElements()) {
String key = (String) en.nextElement();
String Property = properties.getProperty(key);
}
- 修改value
properties.setProperty("http.host", "192.168.1.1");
// 输出
OutputStream fos = new FileOutputStream(filePath);
// 将此 Properties 表中的属性列表(键和元素对)写入输出流
properties.store(fos, "add key:'uri'");
代码
package com;
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.Enumeration;
import java.util.Properties;
/**
* Properties文件操作,方法
*
* @author notNine
* @since 1.0
* @version 2016.11.8
*/
public class OperateProperties {
// 项目路径
public static final String root = System.getProperty("user.dir");
// properties文件路径
public static final String filePath = root + "/config/config.properties";
public static void main(String[] args) {
// 根据key读取properties的value
readProperties();
// 读取properties所有内容
// readAllProperties();
// 写入properties内容
// writeProperties();
}
/**
* 读取properties内容,根据key获取value
*/
public static void readProperties() {
try {
// 读取properties文件
InputStream in = new FileInputStream(filePath);
Properties properties = new Properties();
properties.load(in);
// 根据key获取value
String host = properties.getProperty("http.host");
String port = properties.getProperty("http.port");
// 打印
System.out.println("host:" + host + ",port:" + port);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 读取properties内容,所有内容
*/
public static void readAllProperties() {
try {
// 读取properties文件
InputStream in = new FileInputStream(filePath);
Properties properties = new Properties();
properties.load(in);
// 获取所有内容
Enumeration en = properties.propertyNames();
while (en.hasMoreElements()) {
String key = (String) en.nextElement();
String Property = properties.getProperty(key);
// 打印
System.out.println(key + Property);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 写入properties内容
*/
public static void writeProperties() {
try {
// 读取properties文件
InputStream in = new FileInputStream(filePath);
Properties properties = new Properties();
properties.load(in);
// 修改host
properties.setProperty("http.host", "192.168.1.1");
// 原文件中没有uri,会新增加key和value,但是没有写入保存到文件中
properties.setProperty("http.uri", "/info");
// 输出
OutputStream fos = new FileOutputStream(filePath);
// 将此 Properties 表中的属性列表(键和元素对)写入输出流
properties.store(fos, "add key:'uri'");
// 根据key获取value
String host = properties.getProperty("http.host");
String port = properties.getProperty("http.port");
String uri = properties.getProperty("http.uri");
// 打印
System.out.println("host:" + host + ",port:" + port + ",uri:" + uri);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
运行结果
host:127.0.0.1,port:8080