实现对Java配置文件Properties的读取、写入与更新操作
2024-10-10 20:57:44
/**
* 实现对Java配置文件Properties的读取、写入与更新操作
*/
package test; import java.io.BufferedInputStream;
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; /**
* @author
* @song
*/
public class demo { //属性文件的路径
static String profilepath="WebRoot/WEB-INF/admin/admin.properties";
/**
* 采用静态方法
*/
private static Properties props = new Properties();
static {
try {
props.load(new FileInputStream(profilepath));
} catch (FileNotFoundException e) {
e.printStackTrace();
System.exit(-1);
} catch (IOException e) {
System.exit(-1);
}
} /**
* 读取属性文件中相应键的值
* @param key
* 主键
* @return String
*/
public static String getKeyValue(String key) {
return props.getProperty(key);
} /**
* 根据主键key读取主键的值value
* @param filePath 属性文件路径
* @param key 键名
*/
public static String readValue(String filePath, String key) { Properties props = new Properties();
try {
InputStream in = new BufferedInputStream(new FileInputStream(
filePath));
props.load(in);
String value = props.getProperty(key);
System.out.println(key +"键的值是:"+ value);
if(value.equals("123456")){
System.out.println("登录成功!");
}else {
System.out.println("登录失败!");
}
return value;
} catch (Exception e) {
e.printStackTrace();
return null;
}
} /**
* 插入一对properties信息(主键及其键值)
* @param keyname 键名
* @param keyvalue 键值
*/
public static void writeProperties(String keyname,String keyvalue) {
try {
// 调用 Hashtable 的方法 put,使用 getProperty 方法提供并行性。
// 强制要求为属性的键和值使用字符串。返回值是 Hashtable 调用 put 的结果。
OutputStream fos = new FileOutputStream(profilepath);
props.setProperty(keyname, keyvalue);
// 以适合使用 load 方法加载到 Properties 表中的格式,
// 将此 Properties 表中的属性列表(键和元素对)写入输出流
props.store(fos, "Update '" + keyname + "' value");
} catch (IOException e) {
System.err.println("属性文件更新错误");
}
} /**
* 更新properties文件的键值对
* @param keyname 键名
* @param keyvalue 键值
*/
public void updateProperties(String keyname,String keyvalue) {
try {
props.load(new FileInputStream(profilepath));
// 调用 Hashtable 的方法 put,使用 getProperty 方法提供并行性。
// 强制要求为属性的键和值使用字符串。返回值是 Hashtable 调用 put 的结果。
OutputStream fos = new FileOutputStream(profilepath);
props.setProperty(keyname, keyvalue);
// 以适合使用 load 方法加载到 Properties 表中的格式,
// 将此 Properties 表中的属性列表(键和元素对)写入输出流
props.store(fos, "Update '" + keyname + "' value");
} catch (IOException e) {
System.err.println("属性文件更新错误");
}
}
//测试代码
public static void main(String[] args) {
readValue("WebRoot/WEB-INF/admin/admin.properties", "zs");
//writeProperties("ls", "123456,1");
System.out.println("操作完成");
}
}
最新文章
- 30分钟入门Java8之方法引用
- 封装getByClass
- Spring中的设计模式
- linux下mysql的安装
- Java基础知识强化34:String类之String类的转换功能
- JQuery EasyUI框架学习
- 【LeetCode】【Python解读】Container with most water
- 【AndroidStudio】关于SVN的相关配置简介
- Spring AOP进行日志记录,管理
- JavaScript window与undefined作为参数的作用
- Nginx优化use参数epoll,kqueue,rtsig,eventport,poll
- oracle04 约束,索引
- linux 常用指令
- 7 week work
- t-io 集群解决方案以及源码解析
- hive归档分区
- linux与linux远程桌面
- 无焦点下获取条码枪返回值的Hook(再次改良版)
- ElasticSearch排序Java api简单Demo
- 前端程序员经常忽视的一个 JavaScript 面试题
热门文章
- html 出现粒子线条,鼠标移动会以鼠标为中心吸附的特效之canvas-nest.js插件
- [转]Linux中python3.6+ipython+Jupyter Notebook环境
- MARK DOWN 书写格式说明
- Deviceiocontrol操作异常时,关于getlasterror的错误代码解析
- 【译】Optaplanner开发手册本地化: (0) - 前言及概念
- SSO+PHS 同步问题修正解决
- C# Xamarin开发 GenyMotion adb List of devices attached
- 更新 TeX Live 软件包
- [原创] JAVA 递归线程池测试 ExecutorService / ForkJoinPool
- 简单的爬虫爬的完整的<;img>;标签,修改正则即可修改爬取内容