1. java操作properties文件的工具类简单封装:

    注意:由于本地和环境和linux服务的路径有区别,或者jetty,resin,tomcat部署后,文件的路径也是有区别的。比如我们在linux上把项目放在另一个磁盘下,此时,文件的路径就是项目所在的路径,而不是WEB-INF下,所以,这里需要灵活配置!

  2. package com.sohu.util;import java.io.BufferedInputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.Enumeration;
    import java.util.HashMap;
    import java.util.Map;
    import java.util.Map.Entry;
    import java.util.Properties;
    import java.util.Set;import org.springframework.core.io.ClassPathResource;/*** 测试properties读写处理* @author liweihan ()* @version 1.0 (2015年1月6日 下午2:23:27)*/
    public class TestProperties {/*** 说明:很多时候我们为了减轻数据库的压力,或者减少我们的服务的压力。* 对于不经常变的数据,我们可以放在配置文件中!* *     *     containsKey()* */private static String PFILE = null;public static final boolean OS_LINUX = "/".equals(File.separator);  static{Properties p = new Properties();try {if(OS_LINUX) {//方法1://p.load(TestProperties.class.getClassLoader().getResourceAsStream("config.properties"));//方法2:还可以用这个方法加载p.load(new ClassPathResource("config.properties").getInputStream());//方法3:--应该用在具体路径的地方
    //                  InputStream in = new BufferedInputStream(new FileInputStream("config.properties"));
    //                  p.load(in);} else {//方法1://p.load(TestProperties.class.getClassLoader().getResourceAsStream("config-windows.properties"));//方法2:p.load(new ClassPathResource("config-windows.properties").getInputStream());//方法3:---应该用在具体路径的地方
    //                  InputStream in = new BufferedInputStream(new FileInputStream("config-windows.properties"));
    //                  p.load(in);}PFILE = p.getProperty("goodsongPath").trim();} catch (IOException e) {e.printStackTrace();} }//属性文件全名
    //  private static final String PFILE = "D:\\liweiSohu\\workspaceForEclipse\\R20141229_han\\search-star-HDSS-STAR-WEB-F\\src\\main\\resources\\goodsong.properties";//上面是windows系统本地测试,下面是linux系统
    //  private static final String PFILE = System.getProperty("user.dir") + File.separator + "goodsong.properties";//对应于属性文件的文件对象变量private File m_file = null;//属性文件的最后修改日期private long m_lastModifiedTime = 0;//属性文件所对应的属性对象变量private Properties m_props = null;//本类可能存在的唯一的唯一实例private static TestProperties m_instance = new TestProperties();/*** 私有构造方法,用以保证外界无法直接实例化*/private TestProperties() {m_file = new File(PFILE);m_lastModifiedTime = m_file.lastModified();if (m_lastModifiedTime == 0) {System.err.println(PFILE + " file does not exist !");}m_props = new Properties();try {m_props.load(new FileInputStream(PFILE));} catch (Exception e) {e.printStackTrace();}}/*** 返回单一实例* @return* * 2015年1月6日 下午2:58:02* liweihan*/public static synchronized TestProperties getInstance() {System.out.println(" ---- :" + System.getProperty("user.dir"));return m_instance;}/*** 读取一特定的属性项* @param name     属性项的项名* @param defaultVal  属性项的默认值* @return   属性项的值(如果此项存在),默认值(如此项不存在)* * 2015年1月6日 下午3:01:05* liweihan*/public Object getConfigItem(String name,Object defaultVal) {long newTime = m_file.lastModified();//检查属性文件是否被其他的程序修改过,如果是,重读此配置文件if (newTime == 0) {//属性文件不存在if (m_lastModifiedTime == 0) {System.err.println(PFILE + " file does not exist !");} else {System.err.println(PFILE + " file was deleted !");}return defaultVal;} else if (newTime > m_lastModifiedTime) {//属性文件被修改过,重新加载配置文件m_props.clear();try {m_props.load(new FileInputStream(PFILE));}  catch (Exception e) {e.printStackTrace();}}m_lastModifiedTime = newTime;Object val = m_props.getProperty(name);if (val == null) {return defaultVal;} else {return val;}}/*** 根据指定的属性名获得属性值* @param itemName* @return* * 2015年1月6日 下午3:39:55* liweihan*/public String getValue(String itemName) {return m_props.getProperty(itemName);}/*** 设置属性名和属性值[此设置并不能保存到配置文件中]* @param itemName* @param value* * 2015年1月6日 下午3:45:08* liweihan*/public void setValue(String itemName,String value) {m_props.setProperty(itemName, value);return;}/*** 保存配置文件,指定文件名和抬头描述* @param fileName* @param description* * 2015年1月6日 下午3:56:09* liweihan* @throws Exception */public void saveFile(String fileName,String description) throws Exception {try {FileOutputStream fout = new FileOutputStream(fileName);m_props.store(fout, description);//保存文件fout.close();} catch (Exception e) {System.out.println("无法保存指定的配置文件:" + fileName);throw new Exception("无法保存指定的配置文件:" + fileName);
    //          e.printStackTrace();} }/*** 保存指定的配置文件* @param fileName* * 2015年1月6日 下午3:59:04* liweihan* @throws Exception */public void saveFile(String fileName) throws Exception {saveFile(fileName,"");}/*** 保存指定文件,采用原有名字* * * 2015年1月6日 下午4:01:49* liweihan*/public void saveFile() throws Exception{if (PFILE.length() == 0) {throw new Exception(PFILE + " file does not exist !");}saveFile(PFILE);}/*** 得到配置文件中所有的key和value值,并放在一个map结合中* @return* * 2015年1月6日 下午4:50:39* liweihan*/public Map<String, String> getAllKeyAndValue() {Map<String, String> map = new HashMap<String, String>();Enumeration en = m_props.propertyNames();//遍历while (en.hasMoreElements()) {String key = en.nextElement().toString();//key值String value = m_props.getProperty(key);map.put(key, value);}return map;}/*** 得到配置文件中所有的key和value值,并放在一个map结合中2* @return* * 2015年1月7日 下午6:33:41* liweihan*/public Map<String, String> getAllKeyAndValue2() {Map<String, String> map = new HashMap<String, String>();m_props.list(System.out);Object[] objs = m_props.keySet().toArray();for (int i = 0; i < objs.length; i++) {map.put(objs[i].toString(), m_props.get(objs[i]).toString());}return map;}public static void main(String[] args) {//1.获得java虚拟机的参数Properties pps = System.getProperties();pps.list(System.out);}}

3.测试代码:

        TestProperties p = TestProperties.getInstance();String result = (String)p.getConfigItem(sid, "0");System.out.println("result:" + result);String result2 = p.getValue(sid);System.out.println("result2: " + result2);/*       p.setValue("54418", "hanchao");p.setValue("20", "cc");*/p.setValue(key != null ? key : "0", value != null ? value : "0");try {
//          p.saveFile("system.conf","System.Global.Configuration");p.saveFile();if (key != null && value != null) {setStarIdAndSpaceIdToLocalCache();}} catch (Exception e) {e.printStackTrace();}Map<String, String> map = p.getAllKeyAndValue2();for(Entry<String, String> en : map.entrySet()) {System.out.println("key:" + en.getKey() + ", value :" + en.getValue());}

* 参考:http://wenku.baidu.com/link?url=-02_xrVX1_OQn0a1EcGDQ-LYQ08QXkmVMHHJ7z_aliEkG_4orbP94fjdAf4V5em7PfNXISGbN1gmmRWWED_GrnEDAXWPEsCwCmrsDaUr82W

*     http://wenku.baidu.com/view/bbe96f6e25c52cc58bd6be99.html

*     http://www.cnblogs.com/bakari/p/3562244.html

*

*     加载的六种方法:

*     http://blog.csdn.net/Senton/article/details/4083127

转载于:https://blog.51cto.com/hanchaohan/1600546

java操作properties文件简单学习相关推荐

  1. Java学习笔记(二)——Java操作properties文件

    [前面的话] 前段时间在学习和玩java web相关的东西,对于这些技术,一边学习,一边做东西,一边总结,希望可以一边成长和有所收获.有时总是思考太多反而成为了前进的阻力,所以对于生活还是简单一些,不 ...

  2. JAVA操作properties文件

    操作properties文件的java方法 Properties prop = new Properties(); InputStream in = getClass().getResourceAsS ...

  3. java操作properties文件持久键值对和注解到文件

    properties文件在应用系统很长用,写properties文件和加载properties文件都很简单也是很常用的方法. 持久化键值对Properties类提供了store几个方法,其中只能在第一 ...

  4. JAVA 操作 properties 配置文件

    一.简介 Java中的properties文件是一种纯文本格式的配置文件,主要用于表达配置信息,文件类型为 *.properties,文件中内容的格式是 "键=值" 的格式.在pr ...

  5. Java基础学习总结(15)——java读取properties文件总结

    2019独角兽企业重金招聘Python工程师标准>>> 一.java读取properties文件总结 在java项目中,操作properties文件是经常要做的,因为很多的配置信息都 ...

  6. Java中Properties类的学习总结

    学习目标: 1.认识properties文件,理解其含义,会正确创建properties文件. 2.会使用java.util.Properties类来操作properties文件. 一.认识prope ...

  7. JAVA操作properties配置文件

    一.简介 <1> java中的properties文件是一种配置文件,主要用于表达配置信息,文件类型为*.properties,格式为文本文件,文件的内容是格式是"键=值&quo ...

  8. 解决修改properties 属性文件存在缓存问题,附带操作properties文件工具类

    2019独角兽企业重金招聘Python工程师标准>>> 在做项目的时候有些数据不一定需要在数据库管理,例如数据库连接,定时任务等等的配置..有时候需要动态修改这些数据,但在修改完后, ...

  9. JAVA操作属性文件,可进行读 写 更改

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! JAVA ...

最新文章

  1. 思维导图 - 测试技术扩展:Postman接口测试、Sonar白盒测试、Sonic移动测试、Python操作FTP服务器
  2. 【转】Web API项目中使用Area对业务进行分类管理
  3. python 列表副本_列表副本不工作?
  4. 文本分类模型_多标签文本分类、情感倾向分析、文本实体抽取模型如何定制?...
  5. Dom4j解析器_解析xml文档
  6. poj 3331 关于阶乘运算
  7. EularProject 39:给周长推断构成直角三角形个数
  8. 初学者python笔记(内置函数_2)
  9. python变量定义 关键字_(四)Robot Framework 基础关键字
  10. 每日算法系列【LeetCode 376】摆动序列
  11. kylin_异常_02_java.lang.NoClassDefFoundError: org/apache/hadoop/hive/conf/HiveConf 解决办法
  12. 在Ubuntu 20.04部署SONIC testbed(topo 0)
  13. 深度学习笔记(一)——M-P模型(神经元模型)
  14. 小米最新系统android 10,国内最快推送安卓10稳定版系统!小米新旗舰出厂标配稳了...
  15. android测试基站,Android iPhone 手机查看基站信息
  16. 组合测试法是什么 软件测试,组合测试模型方法
  17. 全民投资人游戏服务器维护,欢乐园《全民仙战》2月3日14时合服公告
  18. 哈希表(HashMap)的学习与实现
  19. bit、Byte、bps、Bps、pps、Gbps的详细说明及换算
  20. Nico的刷题日记(一)

热门文章

  1. python画一个祝福别人生日快乐_还在送生日贺卡?试试为家人朋友创作一个生日动画短视频吧...
  2. layer自动补全 select
  3. websphere 启动出错 检查节点 上服务器的日志_启动Redis Sentinel哨兵
  4. python 模糊匹配_Case2:模糊匹配工具
  5. 系统与服务器断开了连接不上,win7系统电脑玩跑跑卡丁车出现与服务器断开连接的解决方法...
  6. android简单小项目实例_300行C代码打造简单的闹钟小程序,适合初学C++同学练手的项目...
  7. ASP.NET的ASHX一般处理程序中Session为null且不能赋值
  8. 数据结构题及c语言版4.31答案,数据结构参考题及答案修正版.doc
  9. 1到100的偶数之和是多少_什么白酒适合收藏,收藏多久出手,茅台五粮液老酒价格是多少?...
  10. Windows10下VB6.0开发——写入数据到文件操作