博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java配置文件Properties的读取、写入与更新操作
阅读量:4946 次
发布时间:2019-06-11

本文共 3389 字,大约阅读时间需要 11 分钟。

 
/** * 实现对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 * @version */ public class SetSystemProperty {     //属性文件的路径     static String profilepath="mail.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);             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("mail.properties", "MAIL_SERVER_PASSWORD");         writeProperties("MAIL_SERVER_INCOMING", "327@qq.com");                System.out.println("操作完成");     } }

转载于:https://www.cnblogs.com/tanglong8848/archive/2012/02/07/3010737.html

你可能感兴趣的文章
[Android实例] Scroll原理-附ScrollView源码分析 (转载)
查看>>
gcc编译参数-fPIC的一些问题
查看>>
centos7.4/rehat7.0系统安装
查看>>
多态继承
查看>>
1063 计算谱半径
查看>>
BZOJ 1529 - 并查集
查看>>
LVS介绍
查看>>
$.fn.extend() 问:我来这个世上到底是干嘛的?
查看>>
ELF文件和BIN文件
查看>>
django项目在uwsgi+nginx上部署遇到的坑
查看>>
MongoDB账号管理及实践
查看>>
111CSS3效果:旋转的正方体
查看>>
windebug 与 office Home
查看>>
整理了关于javascript中mouse坐标几段函数
查看>>
Infix to Postfix Expression
查看>>
win7任务栏还原为xp样式
查看>>
html--笔记day03
查看>>
读取短信
查看>>
互质数:欧拉公式
查看>>
AndroidStudio离线打包MUI集成JPush极光推送并在java后端管理推送
查看>>