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. [个人小工具]清除SVN控制

    SVN控制说白了就是在.svn文件夹内把项目文件的信息保存,清除SVN控制其实就是把.svn文件夹删除就可以了.但是如果文件夹太多,总不可能一个个文件夹去删除吧,所以写了个遍历文件夹删除的小工具. R ...

  2. JavaWeb总结(三)—JSP

    一.JSP简介 1.基本认识 (1)JSP页面是由HTML语句和嵌套在其中的Java代码组成的一个普通文本文件,JSP 页面的文件扩展名必须为.jsp. (2)在JSP页面中编写的Java代码需要嵌套 ...

  3. MySQL存储过程--带参数报错1064

    DELIMITER $$ USE `student`$$ DROP PROCEDURE IF EXISTS `sync_student`$$ CREATE DEFINER=`student`@`%` ...

  4. POJ3592 Instantaneous Transference题解

    题意: 给一个矩形,矩形中某些点有一定数量的矿石,有些点为传送点,有些点为障碍.你驾驶采矿车(ore-miner truck,我也不知道是什么),从左上角出发,采尽量多的矿石,矿石不可再生.不能往左边 ...

  5. 关于阿里图标库Iconfont生成图标的三种使用方式(fontclass/unicode/symbol)

    1.附阿里图标库链接:http://www.iconfont.cn/ 2.登录阿里图标库以后,搜索我们需要的图标,将其加入购物车,如图3.将我们需要的图标全部挑选完毕以后,点击购物车图标4.这时候右侧 ...

  6. 如何选择合适的PHP开发框架

    PHP作为一门成熟的WEB应用开发语言,已经深受广大开发者的青睐.与此同时,各式各样的PHP开发框架也从出不穷,面对如此多而且良莠不齐的开发框架,开发者们想必都会眼花缭乱,不知道该选择用哪个.其实并没 ...

  7. Spring Boot启动过程(七):Connector初始化

    Connector实例的创建已经在Spring Boot启动过程(四):Spring Boot内嵌Tomcat启动中提到了: Connector是LifecycleMBeanBase的子类,先是设置L ...

  8. STM32学习笔记(四)——串口控制LED(中断方式)

    目录: 一.时钟使能,包括GPIO的时钟和串口的时钟使能 二.设置引脚复用映射 三.GPIO的初始化配置,注意要设置为复用模式 四.串口参数初始化配置 五.中断分组和中断优先级配置 六.设置串口中断类 ...

  9. JavaScript巧学巧用

    关于 微信公众号:前端呼啦圈(Love-FED) 我的博客:劳卜的博客 知乎专栏:前端呼啦圈 前言 由于工作和生活上的一些变化,最近写文章的频率有点下降了,实在不好意思,不过相信不久就会慢慢恢复过来, ...

  10. linux下删除乱码文件、目录

    由于编码原因,在linux服务器上上传.创建中文文件或目录时,会产生乱码,如果想删除它,发现用rm命令是删除不了的 这种情况下,用find命令可以删除乱码的文件或目录. 首先进入乱码文件或目录所在的目 ...