Properties类继承Hashtable类并实现了Map接口,用键值对的形式保存属性,且键值对都是以String形式保存。
Properties类中主要方法:
load方法:load(InputStream inputStream),将Properties文件对应的inputStream流,加载到Properties一个对象中,
store方法:将Properties对象对应的属性列表保存到输出流中。
getProperty和setProperty方法:分别获取和设置属性列表
java代码如下:
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Properties;
public class CommonParam {
public static String filePath="config.properties";
/**
* 根据KEY,读取文件对应的值
* @param filePath 文件路径,即文件所在包的路径,例如:java/util/config.properties
* @param key 键
* @return key对应的值
*/
public static String readData(String key) {
Properties props = new Properties();
try {
InputStream in = new BufferedInputStream(new FileInputStream(filePath));
props.load(in);
String value = props.getProperty(key);
in.close();
return value;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* 修改或添加键值对 如果key存在,修改, 反之,添加。
* @param filePath 文件路径,即文件所在包的路径,例如:java/util/config.properties
* @param key 键
* @param value 键对应的值
*/
public static void writeData(String key, String value) {
Properties prop = new Properties();
try {
File file = new File(filePath);
if (!file.exists())
file.createNewFile();
InputStream fis = new FileInputStream(file);
prop.load(fis);
//一定要在修改值之前关闭fis
fis.close();
OutputStream fos = new FileOutputStream(filePath);
prop.setProperty(key, value);
//保存,并加入注释
prop.store(fos, "Update '" + key + "' value");
fos.close();
} catch (IOException e) {
System.err.println("Visit " + filePath + " for updating " + value + " value error");
}
}
}