import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Properties; /**
* @Description 加载属性配置文件工具类
* @Package com.viathink.utils.PropertiesFilesUtils.java
* @date 2012-5-16 下午3:18:19
* @version V1.0
*/
public class PropertiesFilesUtils {
private static final PropertiesFilesUtils propertiesFiles = new PropertiesFilesUtils(); /**
* 存放所有的属性配置文件对象
*/
private Map<String, Properties> propertiesMap = new HashMap<String, Properties>(); private PropertiesFilesUtils() {
} /**
* 获得属性配置文件工具类的实例对象
*
* @return PropertiesFilesUtils 对象
*/
public static PropertiesFilesUtils getInstance() {
return propertiesFiles;
} /**
* 获取Properties文件对象
*
* @param PropertiesFileName
* @return
* @throws IOException
*/
public synchronized Properties getProperties(String propertiesFileName) throws IOException {
if (propertiesFileName == null || "".equals(propertiesFileName)) {
throw new IllegalArgumentException("The propertiesFileName is illegal argument!");
}
Properties prop = propertiesMap.get(propertiesFileName);
if (prop == null) {
prop = new Properties();
//注意这个文件的InputStream,这里要修改
InputStream is = this.getClass().getResourceAsStream(propertiesFileName);
if (is == null)
throw new FileNotFoundException("The file \"" + propertiesFileName + "\" is not found!");
prop.load(is);
propertiesMap.put(propertiesFileName, prop);
}
return prop;
} /**
* 将properties文件写到磁盘上
*
* @param properties
* 属性文件
* @param propertiesFilePath
* 要保存的路径
* @throws IOException
*/
public void writePropertiesFile(Properties properties, String propertiesFilePath) throws IOException {
if (properties == null || propertiesFilePath == null || "".equals(propertiesFilePath))
throw new IllegalArgumentException("The props or propertiesFilePath is illegal argument!");
FileWriter fw = new FileWriter(propertiesFilePath);
properties.store(fw, null);
fw.flush();
fw.close();
} /**
* 更新属性文件的某个属性,并保存到磁盘上
*
* @param properties
* 要更新的属性文件
* @param propertyName
* 属性名称
* @param propertyValue
* 属性值
* @param filePath
* 保存的文件路径
* @throws IOException
*/
public void updatePropertiesFile(Properties properties, String propertyName, String propertyValue, String filePath)
throws IOException {
if (properties == null || propertyName == null || "".equals(propertyName) || propertyValue == null
|| "".equals(propertyValue) || filePath == null || "".equals(filePath))
throw new IllegalArgumentException("The parameters is illegal argument!");
properties.setProperty(propertyName, propertyValue);
writePropertiesFile(properties, filePath);
} /**
* 根据属性配置文件名称和属性名称获取属性配置值
*
* @param propertiesFileName
* 属性配置文件名称
* @param propertyName
* 属性名称
* @return 属性值
* @throws IOException
*/
public String getProperty(String propertiesFileName, String propertyName) throws IOException {
Properties prop = getProperties(propertiesFileName);
return prop.getProperty(propertyName);
} /**
* 获得Properties对象列表
*
* @return
*/
public List<Properties> getProperties() {
if (propertiesMap.isEmpty())
return null;
return new LinkedList<Properties>(propertiesMap.values());
} /**
* 获得属性对象Map
*
* @return
*/
public Map<String, Properties> getPropertiesMap() {
return propertiesMap;
} public static void main(String[] args) throws IOException {
String realPath="p.txt";
PropertiesFilesUtils pfu = PropertiesFilesUtils.getInstance();
Properties pro = pfu.getProperties(realPath);
Properties pro1 = pfu.getProperties(realPath);
Properties pro2 = pfu.getProperties(realPath);
Properties pro3 = pfu.getProperties(realPath); System.out.println(pro == pro1);
System.out.println(pro == pro2);
System.out.println(pro == pro3); System.out.println(pfu.getProperties().size());
System.out.println(pfu.getPropertiesMap().size());
System.out.println(pro.getProperty("a"));
pfu.updatePropertiesFile(pro, "messge.type", "image", realPath);
System.out.println(pro.getProperty("messge.type"));
}
}

文本的内容是

aaarticlea/png;base64,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" alt="" />

输出

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMwAAACvCAIAAAA+IKZRAAADRElEQVR4nO3dwW3bShRAUdWlglgPS3AVbEZNqANmIYWmYhmhzFx/fPOcTQyKEbK4mGGGD/Bpnufr9Xq9Xt/e3q6/rX+GnU4ioyYyciIjJzJyIiMnMnIiIycyciIjJzJyIiMnMnIiIycyciIjJzJyIiMnMnIiIycycn+J7A12+0tkM+wmMnIiIycyctsju4zn0zD9V/9O/sdERm5TZJfxfHpwHi/zPM/TcBrG5bNbgdOwpLjOcvUVSj2aXSvZNCy9LXE9jWx1cZ6G5e9wDHsj+7AsPYvsz5VQZMfyLZFZvI7thSOMj6l8EtntrtvytWyXHsWO65Vzsvddb/Xg/yGd5a7zOA7PHvytakfjMJacyMiJjJzIyImMnMjIiYycKQxyIiNn1IecUR9yRn3IGfUhZ9SHnFEfcg5jyYmMnMjIiYycyMiJjJzIyJnCICcyckZ9yBn1IWfUh5xRH3JGfcgZ9SHnMJacyMiJjJzIyImMnMjIiYzcayf+Xm/zBRsju53jm/bhK17aLkXGV4iMnMjIiYycyMht/9/lA6mxncNYciIjJzJyIiMnMnIiIycyckZ9yBn1Iee1EjmRkRMZOZGRExk5oz7kHMaSExk5kZETGTmRkRMZOZGR2znqs/0ix7Vn1Gf7RQ5t/2ul7Rc5KJGRExk5kZETGbk9oz7bL3JoDmPJiYycyMiJjJzIyImM3Mu/g9yRBK8SGTnbJbmtkS0H+ctKdhnP53EcTqfT/Y/7R+sj//dl7/FFwHm83L/Ci4ED+Pq7y9+b5zSc7mOK93Se3H6bZJwff5yG9y9b3cCPsy+yYVr6eI/sYdH6PLLVMrZe3fh5/nlkq55Wt6/C+7ik8cP968gu4/m0XtGGaZ7nJ1vp/XOPYkewMbI/97Zh+nS7XBat8zgOT1ay1VP++lutaj/XtxxhPK5Z9smj+f7I7JKH8z2HsQ+7rWXsaJz4kxMZOZGRExk5kZETGTmRkRMZOZGRExk5kZETGTmRkRMZOZGRExk5kZETGTmRkRMZOZGRExk5kZETGTmRkRMZOZGRExk5kZETGTmRkRMZOZGRExk5kZETGTmRkRMZOZGRExk5kZETGTmRkRMZOZGRExk5kZETGblf4wzO8UeM05EAAAAASUVORK5CYII=" alt="" />

java.util.Properties工具类的更多相关文章

  1. 使用java.util.Properties工具制作自定义访问配置文件信息

    import ch.qos.logback.classic.Logger; import org.slf4j.LoggerFactory; import java.io.IOException; im ...

  2. java.util.UUID工具类

    生成数据表的主键Id会用到此工具类 /** * <获取主鍵> * <获取32位UUID> * @return * @see [类.类#方法.类#成员] */ public st ...

  3. Java Properties工具类详解

    1.Java Properties工具类位于java.util.Properties,该工具类的使用极其简单方便.首先该类是继承自 Hashtable<Object,Object> 这就奠 ...

  4. java学习-加载.properties工具类

    javaWeb项目,要加载xxx.properties或其它如.txt, .md后缀的文本文件 文本内容有两种格式 key:value或者key=value 诸如Spring框架,Jfinal框架,都 ...

  5. 【Java笔记】配置文件java.util.Properties类的使用

    配置文件的路径:项目名/src/main/resources/mmall.properties mmall.properties的内容是键值对.例如假设写了ftp服务器的一些信息. ftp.serve ...

  6. 方便好使的java.util.Properties类

    今天偶然碰到这个类,发现jdk中这些平时不大用到的类还挺好玩儿的,用起来也特别实在方便,随便写点记录下. java.util.Properties是对properties这类配置文件的映射.支持key ...

  7. 使用java.util.Properties类读写配置文件

    J2SE 1.5 以前的版本要求直接使用 XML 解析器来装载配置文件并存储设置,虽说也并非难事,相比 java.util.Properties却要做额外的解析工作.而java.util.Proper ...

  8. java.util.Properties类 学习笔记

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

  9. JavaSE-基础语法(二)-系统类(java.lang.*)和工具类(java.util.*)

    系统类(java.lang.*)和工具类(java.util.*) 一.系统类(java.lang.*) 这个包下包含java语言的核心类,如String.Math.System和Thread类等,使 ...

随机推荐

  1. JavaScript基础学习(五)—其他引用类型

         JavaScript定义了两个内置对象: Global和Math. 一.Global对象 1.URI编码方法      Global对象的encodeURI()和encodeURICompo ...

  2. day002-HTML知识点总结:浏览器兼容性之指定IE浏览器使用chrome内核渲染页面

    今天再浏览大淘宝首页时,突然看到这么一个东东: ,顿时好费解,莫非万恶的IE浏览器认识到自己以往的罪孽,开始兼容chrome了??! 于是本着不懂就百度的神精,开始纵横于各大铁耙,勃哥,终于找到了许许 ...

  3. 读书笔记 effective c++ Item 46 如果想进行类型转换,在模板内部定义非成员函数

    1. 问题的引入——将operator*模板化 Item 24中解释了为什么对于所有参数的隐式类型转换,只有非成员函数是合格的,并且使用了一个为Rational 类创建的operator*函数作为实例 ...

  4. centos7.2部署最新ELK 5.3

    ## 安装elasticsearch服务> 安装jdk 1.8 ```rpm -ivh jdk-8u101-linux-x64.rpmjava -version``` > 配置rpm `` ...

  5. 对InvokeRequired的理解

    if (listBox1.InvokeRequired)                            //当有新工作进程访问控件时InvokeRequired为True            ...

  6. Sql日期时间格式转换大全

    简介:我们经常会用到sql日期转换,这里列出了日期输出为字符串的所有代码 输出格式 2014-06-12 ), ) 输出格式 2014-06-12 22:31:18 ), ) 以下是各种转换日期代码号 ...

  7. R语言各种假设检验实例整理(常用)

    一.正态分布参数检验 例1. 某种原件的寿命X(以小时计)服从正态分布N(μ, σ)其中μ, σ2均未知.现测得16只元件的寿命如下: 159 280 101 212 224 379 179 264  ...

  8. C# 弱引用WeakReferance

    在应用程序代码内实例化一个类或结构时,只要有代码引用它,就会形成强引用.例如,如果有一个类MyClass(),并创建一个变量MyClassVariable来引用该类的对象,那么只要在 MyClassV ...

  9. AspNetCore - MVC实战系列(一)

    本章开篇先简单介绍下最近两周自己利用业余时间做的一个图片收集网站,当然这个是靠用户自己上传来收集不是去抓某些个网站的图片,那样没意义,这里我取名为“爱留图”:该网站的简单介绍大家可以参考下上篇的内容爱 ...

  10. bootstrap快速入门笔记(三)响应式,行,列,偏移量,排序

    一,响应式列重置 .clearfix <div class="row"> <div class="col-xs-6 col-sm-3"> ...