1 简介:

JDK提供的java.util.Properties类继承自Hashtable类并且实现了Map接口,是使用一种键值对的形式来保存属性集,其中键和值都是字符串类型。
java.util.Properties类提供了getProperty()和setProperty()方法来操作属性文件,同时使用load()方法和store()方法加载和保存Properties配置文件。
java.util.ResourceBundle类也提供了读取Properties配置文件的方法,ResourceBundle是一个抽象类。
2.Properties中的主要方法
1)load(InputStream inStream):该方法可以从.properties属性文件对应的文件数入流中,加载属性列表到Properties类对象中。load有两个方法的重载:load(InputStream inStream)、load(Reader reader),可根据不同的方式来加载属性文件。
InputStream inStream = TestProperties.class.getClassLoader().getResourceAsStream("demo.properties");
//通过当前类加载器的getResourceAsStream方法获取
//TestProperties当前类名;TestProperties.class.取得当前对象所属的Class对象; getClassLoader():取得该Class对象的类装载器
InputStream in = ClassLoader.getSystemResourceAsStream("filePath");
InputStream inStream = new FileInputStream(new File("filePath")); //从文件获取
InputStream in = context.getResourceAsStream("filePath"); //在servlet中,可以通过context来获取InputStream
InputStream inStream = new URL("path").openStream(); //通过URL来获取
读取方法如下:
Properties pro = new Properties(); //实例化一个Properties对象
InputStream inStream = new FileInputStream("demo.properties"); //获取属性文件的文件输入流
pro.load(nStream);
inStream.close();
2)store(OutputStream out,String comments):这个方法将Properties类对象的属性列表写入.properties配置文件。如下:
FileOutputStream outStream = new FileOutputStream("demo.properties");
pro.store(outStream,"Comment");
outStream.close();
3 ResourceBundle中的主要方法
通过ResourceBundle.getBundle()静态方法来获取,此方法获取properties属性文件不需要加.properties后缀名。也可以从InputStream中获取ResourceBundle对象。
ResourceBundle resource = ResourceBundle.getBundle("com/xiang/demo");//emo为属性文件名,放在包com.xiang下,如果是放在src下,直接用test即可
ResourceBundle resource1 = new PropertyResourceBundle(inStream);
String value = resource.getString("name");
在使用中遇到的问题可能是配置文件的路径,当配置文件不在当前类所在的包下,则需要使用包名限定;若属性文件在src根目录下,则直接使用demo.properties或demo即可。
4 Properties操作实例
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Properties;
/**
* Java中Preperties配置文件工具类
* @author shu
*
*/
public class PropsUtil {
private String path = "";
private Properties properties ;
/**
* 默认构造函数
*/
public PropsUtil() {}
/**
* 构造函数
* @param path 传入Properties地址值
*/
public PropsUtil(String path) {
this.path = path;
}
/**
* 加载properties文件
* @return 返回读取到的properties对象
*/
public Properties loadProps(){
InputStream inStream = ClassLoader.getSystemResourceAsStream(path);
try {
if(inStream==null)
throw new FileNotFoundException(path + " file is not found");
properties = new Properties();
properties.load(inStream);
inStream.close();
} catch (IOException e) {
e.printStackTrace();
}
return properties;
}
/**
* 将配置写入到文件
*/
public void writeFile(){
// 获取文件输出流
try {
FileOutputStream outputStream = new FileOutputStream( new File(ClassLoader.getSystemResource(path).toURI()));
properties.store(outputStream, null);
outputStream.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 通过关键字获取值
* @param key
* @return 返回对应的字符串,如果无,返回null
*/
public String getValueByKey(String key) {
if(properties==null)
properties = loadProps();
String val = properties.getProperty(key.trim());
return val;
}
/**
* 通过关键字获取值
* @param key 需要获取的关键字
* @param defaultValue 若找不到对应的关键字时返回的值
* @return 返回找到的字符串
*/
public String getValueByKey(String key,String defaultValue){
if(properties==null)
properties = loadProps();
return properties.getProperty(key, defaultValue);
}
/**
* 获取Properties所有的值
* @return 返回Properties的键值对
*/
public Map<String, String> getAllProperties() {
if(properties==null)
properties = loadProps();
Map<String, String> map = new HashMap<String, String>();
// 获取所有的键值
Iterator<String> it=properties.stringPropertyNames().iterator();
while(it.hasNext()){
String key=it.next();
map.put(key, properties.getProperty(key));
}
/*Enumeration enumeration = properties.propertyNames();
while (enumeration.hasMoreElements()) {
String key = (String) enumeration.nextElement();
String value = getValueByKey(key);
map.put(key, value);
}*/
return map;
}
/**
* 往Properties写入新的键值且保存
* @param key 对应的键
* @param value 对应的值
*/
public void addProperties(String key, String value) {
if(properties==null)
properties = loadProps();
properties.setProperty(key, value);
try {
writeFile();
} catch (Exception e) {
throw new RuntimeException("write fail");
}
}
/**
* 更新配置文件
* @param key 对应的键
* @param value 对应的值
*/
public void update(String key,String value){
if(properties==null)
properties = loadProps();
if(properties.containsKey(key))
properties.replace(key, value);
try {
writeFile();
} catch (Exception e) {
throw new RuntimeException("write fail");
}
}
/**
* 刪除某一鍵值对
* @param key
*/
public void deleteByKey(String key){
if(properties==null)
properties = loadProps();
if(!properties.containsKey(key))
throw new RuntimeException("not such key");
properties.remove(key);
try {
writeFile();
} catch (Exception e) {
throw new RuntimeException("write fail");
}
}
/**
* 设置path值
* @param path
*/
public void setPath(String path){
this.path = path;
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# java
# 操作properties
# properties
# 配置
# Java读取Properties文件几种方法总结
# 详解Spring加载Properties配置文件的四种方式
# Java中Properties类的操作实例详解
# Java中使用Properties配置文件的简单方法
# 基于Properties类操作.properties配置文件方法总结
# 配置文件
# 加载
# 键值
# 放在
# 方法来
# 都是
# 是一个
# 不需要
# 找不到
# 可以通过
# 要使
# 大家多多
# 方法如下
# 则需
# 象中
# 实现了
# 可根据
# 有两个
# 抽象类
# File
相关文章:
如何通过智能用户系统一键生成高效建站方案?
黑客如何利用漏洞与弱口令入侵网站服务器?
如何选择高效稳定的ISP建站解决方案?
如何用VPS主机快速搭建个人网站?
b2c电商网站制作流程,b2c水平综合的电商平台?
相册网站制作软件,图片上的网址怎么复制?
阿里云高弹*务器配置方案|支持分布式架构与多节点部署
家具网站制作软件,家具厂怎么跑业务?
青岛网站建设如何选择本地服务器?
如何制作一个表白网站视频,关于勇敢表白的小标题?
网站按钮制作软件,如何实现网页中按钮的自动点击?
成都网站制作公司哪家好,四川省职工服务网是做什么用?
合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?
南京做网站制作公司,南京哈发网络有限公司,公司怎么样,做网页美工DIV+CSS待遇怎么样?
c++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】
免费制作小说封面的网站有哪些,怎么接网站批量的封面单?
如何做网站制作流程,*游戏网站怎么搭建?
免费网站制作appp,免费制作app哪个平台好?
高端网站建设与定制开发一站式解决方案 中企动力
香港服务器建站指南:免备案优势与SEO优化技巧全解析
宝塔建站无法访问?如何排查配置与端口问题?
建站主机如何选?性能与价格怎样平衡?
小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?
常州自助建站:操作简便模板丰富,企业个人快速搭建网站
C#如何在一个XML文件中查找并替换文本内容
高防服务器租用如何选择配置与防御等级?
建站主机系统SEO优化与智能配置核心关键词操作指南
如何通过NAT技术实现内网高效建站?
沈阳个人网站制作公司,哪个网站能考到沈阳事业编招聘的信息?
青浦网站制作公司有哪些,苹果官网发货地是哪里?
高端智能建站公司优选:品牌定制与SEO优化一站式服务
山东网站制作公司有哪些,山东大源集团官网?
自助网站制作软件,个人如何自助建网站?
如何挑选优质建站一级代理提升网站排名?
保定网站制作方案定制,保定招聘的渠道有哪些?找工作的人一般都去哪里看招聘信息?
建站主机如何选?高性价比方案全解析
制作表格网站有哪些,线上表格怎么弄?
如何自定义建站之星网站的导航菜单样式?
如何在VPS电脑上快速搭建网站?
TestNG的testng.xml配置文件怎么写
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?
,网站推广常用方法?
如何设置并定期更换建站之星安全管理员密码?
如何在云主机快速搭建网站站点?
如何在阿里云香港服务器快速搭建网站?
如何快速查询网址的建站时间与历史轨迹?
武汉外贸网站制作公司,现在武汉外贸前景怎么样啊?
如何正确下载安装西数主机建站助手?
如何基于PHP生成高效IDC网络公司建站源码?
北京建设网站制作公司,北京古代建筑博物馆预约官网?
*请认真填写需求信息,我们会在24小时内与您取得联系。