/**
* 实现对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("操作完成");
}
}

  

最新文章

  1. 30分钟入门Java8之方法引用
  2. 封装getByClass
  3. Spring中的设计模式
  4. linux下mysql的安装
  5. Java基础知识强化34:String类之String类的转换功能
  6. JQuery EasyUI框架学习
  7. 【LeetCode】【Python解读】Container with most water
  8. 【AndroidStudio】关于SVN的相关配置简介
  9. Spring AOP进行日志记录,管理
  10. JavaScript window与undefined作为参数的作用
  11. Nginx优化use参数epoll,kqueue,rtsig,eventport,poll
  12. oracle04 约束,索引
  13. linux 常用指令
  14. 7 week work
  15. t-io 集群解决方案以及源码解析
  16. hive归档分区
  17. linux与linux远程桌面
  18. 无焦点下获取条码枪返回值的Hook(再次改良版)
  19. ElasticSearch排序Java api简单Demo
  20. 前端程序员经常忽视的一个 JavaScript 面试题

热门文章

  1. html 出现粒子线条,鼠标移动会以鼠标为中心吸附的特效之canvas-nest.js插件
  2. [转]Linux中python3.6+ipython+Jupyter Notebook环境
  3. MARK DOWN 书写格式说明
  4. Deviceiocontrol操作异常时,关于getlasterror的错误代码解析
  5. 【译】Optaplanner开发手册本地化: (0) - 前言及概念
  6. SSO+PHS 同步问题修正解决
  7. C# Xamarin开发 GenyMotion adb List of devices attached
  8. 更新 TeX Live 软件包
  9. [原创] JAVA 递归线程池测试 ExecutorService / ForkJoinPool
  10. 简单的爬虫爬的完整的<img>标签,修改正则即可修改爬取内容