`

java 中Properties 常用方法总结

    博客分类:
  • java
阅读更多
package com.common.util;

import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.InputStream;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Properties;

import org.apache.log4j.Logger;

/**
 * 对.properties属性文件相关操作的工具类,该类无法被继承。
 * @author Belin Wu
 * @version 1.0 2012-07-24
 */
public final class PropertiesHelper {
 
 @SuppressWarnings("unused")
 private static final Logger LOGGER = Logger.getLogger(PropertiesHelper.class);
 
 /**
  * PropertiesHelper类的私有构造方法
  */
 private PropertiesHelper() {
 }
 
 /**
  * 根据给定的资源文件的路径值,加载单个资源文件,返回Properties类对象的引用。若有异常产生,则Properties类对象的引用为null。
  * @param filePath 资源文件的路径值
  * @return 给定资源文件所对应的Properties类对象的引用。
  */
 public static Properties loadPropertiesFile(String filePath) {
  Properties properties = new Properties();
  InputStream is = null;
  
  try {
   try {
    is = new FileInputStream(filePath);
    properties.load(is);
   } finally {
    if (is != null) {
     is.close();
     is = null;
    }
   }
  } catch (Exception e) {
   properties = null;
  }
  
  return properties;
 }
 
 /**
  * 根据多个资源文件的路径值,加载多个资源文件。
  * @param filePaths 多个资源文件的路径值
  * @return 存放Properties类型引用的散列表,该散列表以资源文件的路径值为键。
  * @see PropertiesHelper#loadPropertiesFile(String)
  */
 public static Map<String, Properties> loadPropertiesFiles(List<String> filePaths) {
  Map<String, Properties> propertiesMap = new HashMap<String, Properties>();
  
  for (String filePath : filePaths) {
   propertiesMap.put(filePath, loadPropertiesFile(filePath));
  }
  
  return propertiesMap;
 }
 
 /**
  * 根据给定的文件路径值,存放properties引用相关的资源文件到磁盘上。
  * @param filePath 目标资源文件的路径值
  * @param properties Properties类型的引用
  * @return 操作成功,返回true;否则,返回false。
  * @see PropertiesHelper#storePropertiesFile(String, Map)
  */
 public static boolean storePropertiesFile(String filePath, Properties properties) {
  return storePropertiesFile(filePath, getProperty(properties));
 }
 
 /**
  * 根据给定的文件路径值和欲存放的键值对,将目标资源文件存放到磁盘上。
  * @param filePath 目标资源文件的路径值
  * @param propertyMap 所有键值对
  * @return 操作成功,返回true;否则,返回false。
  */
 public static boolean storePropertiesFile(String filePath, Map<String, String> propertyMap) {
  Properties properties = new Properties();
  FileWriter writer = null;
  
  try {
   try {
    writer = new FileWriter(filePath);
    
    for (Map.Entry<String, String> entry : propertyMap.entrySet()) {
     properties.put(entry.getKey(), entry.getValue());
    }
    
    properties.store(writer, null);
   } finally {
    if (writer != null) {
     writer.close();
     writer = null;
    }
   }
   
   return true;
  } catch(Exception e) {
   return false;
  }
 }
 
 /**
  * 处理多个资源文件存放到磁盘上。
  * @param filePaths 多个资源文件的路径值集合
  * @param propertyMaps 多个资源文件中的键值对集合
  * @return 操作成功,返回true;否则,返回false。
  * @see PropertiesHelper#storePropertiesFile(String, Map)
  */
 public static boolean storePropertiesFiles(List<String> filePaths, List<Map<String, String>> propertyMaps) {
  int filePathSize = filePaths.size();
  
  if (filePathSize != propertyMaps.size()) {
   return false;
  }
  
  for (int i = 0; i < filePathSize; i++) {
   if (!storePropertiesFile(filePaths.get(i), propertyMaps.get(i))) {
    return false;
   }
  }
  
  return true;
 }
 
 /**
  * 获得给定键所关联的值的字符串形式。若键不存在,则返回给定的默认值。若properties为null,则返回null。
  * @param key 键
  * @param defaultValue 默认值
  * @param properties 目标资源文件所对应的Properties类对象的引用
  * @return 给定键所关联的值的字符串形式
  */
 public static String getString(String key, String defaultValue, Properties properties) {
  return (properties == null) ? null : properties.getProperty(key, defaultValue);
 }
 
 /**
  * 获得给定键所关联的值的字符串形式。若键不存在,则返回给定的默认值。若properties为null,则返回null。
  * @param key 键
  * @param defaultValue 默认值
  * @param properties 目标资源文件所对应的Properties类对象的引用
  * @return 给定键所关联的值的字符串形式
  */
 public static Integer getInteger(String key, Integer defaultValue, Properties properties) {
  String stringValue = (properties == null) ? null : properties.getProperty(key, defaultValue.toString());
  Integer value = null;
  
  if (stringValue == null) {
   return null;
  }
  
  try {
   value = Integer.valueOf(stringValue);
  } catch (NumberFormatException e) {
   value = defaultValue;
  }
  
  return value;
 }
 
 /**
  * 获得给定键所关联的值的布尔形式。若键不存在,则返回给定的默认值。若键所对应的值不为true,则返回的是false。若properties为null,则返回null。
  * @param key 键
  * @param defaultValue 默认值
  * @param properties 目标资源文件所对应的Properties类对象的引用
  * @return 给定键所关联的值的布尔形式
  */
 public static Boolean getBoolean(String key, Boolean defaultValue, Properties properties) {
  String stringValue = (properties == null) ? null : properties.getProperty(key, defaultValue.toString());
  return (stringValue == null) ? null : Boolean.valueOf(stringValue);
 }
 
 /**
  * 获得给定键所关联的值的浮点型形式。若键不存在,则返回给定的默认值。若properties为null,则返回null。
  * @param key 键
  * @param defaultValue 默认值
  * @param properties 目标资源文件所对应的Properties类对象的引用
  * @return 给定键所关联的值的浮点型形式
  */
 public static Double getDouble(String key, Double defaultValue, Properties properties) {
  String stringValue = (properties == null) ? null : properties.getProperty(key, defaultValue.toString());
  Double value = null;
  
  if (stringValue == null) {
   return null;
  }
  
  try {
   value = Double.valueOf(stringValue);
  } catch (NumberFormatException e) {
   value = defaultValue;
  }
  
  return value;
 }
 
 /**
  * 获得给定键所关联的值的日期形式。若键不存在,则返回给定的默认值。若properties为null,则返回null。
  * @param key 键
  * @param defaultValue 默认值
  * @param properties 目标资源文件所对应的Properties类对象的引用
  * @return 给定键所关联的值的日期形式
  */
 public static Date getDate(String key, Date defaultValue, Properties properties) {
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  String stringValue = (properties == null) ? null : properties.getProperty(key, sdf.format(defaultValue));
  Date value = null;
  
  if (stringValue == null) {
   return null;
  }
  
  try {
   value = sdf.parse(stringValue);
  } catch (ParseException e) {
   value = defaultValue;
  }
  
  return value;
 }
 
 /**
  * 根据给定的若干个键和Properties类型的引用,获得资源文件中若干个指定的键值对。
  * @param keys 若干个键
  * @param properties Properties类型引用
  * @return 若干个指定的键值对
  */
 public static Map<String, String> getProperty(List<String> keys, Properties properties) {
  Map<String, String> propertyMap = new HashMap<String, String>();
  
  for (String key : keys) {
   propertyMap.put(key, properties.getProperty(key));
  }
  
  return propertyMap;
 }
 
 /**
  * 根据给定的若干个键和资源文件的路径值,获得资源文件中若干个指定的键值对。该方法会调用getProperty(List, Properties)方法。
  * @param keys 若干个键
  * @param filePath 资源文件的路径值
  * @return 若干个指定的键值对
  * @see PropertiesHelper#getProperty(List, Properties)
  */
 public static Map<String, String> getProperty(List<String> keys, String filePath) {
  return getProperty(keys, loadPropertiesFile(filePath));
 }
 
 /**
  * 获得给定Properties类型引用所对应的资源文件中的所有键值对。
  * @param properties Properties类型的引用
  * @return 资源文件中的所有键值对
  */
 public static Map<String, String> getProperty(Properties properties) {
  Map<String, String> propertyMap = new HashMap<String, String>();
  
  for (Iterator<Object> iter = properties.keySet().iterator(); iter.hasNext();) {
   String key = iter.next().toString();
   propertyMap.put(key, properties.getProperty(key));
  }
  
  return propertyMap;
 }
 
 /**
  * 根据给定的资源文件的路径,获得资源文件中的所有键值对。该方法会调用getProperty(Properties)方法。
  * @param filePath 资源文件的路径值
  * @return 资源文件中的所有键值对
  * @see PropertiesHelper#getProperty(Properties)
  */
 public static Map<String, String> getProperty(String filePath) {
  return getProperty(loadPropertiesFile(filePath));
 }
}

 

分享到:
评论

相关推荐

    Java基础知识点总结.docx

    无论是工作学习,不断的总结是必不可少的。只有不断的总结,发现问题,弥补不足,才能长久的...java.util.concurrent.locks包下常用的类 326 NIO(New IO) 327 volatile详解 337 Java 8新特性 347 Java 性能优化 362

    java常用API总结

    Java 常用API的运用,效率及技巧 1. Java面向对象基本概念 2. System 3. String, StringBuffer 4. 数值,字符,布尔对象与简单类型的操作 5. Class, ClassLoader 6. Java IO系统 7. Java集合类 8. ResourceBundle, ...

    java 面试题 总结

    assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制。在实现中,assertion就是在程序中的一条语句,它对一个boolean表达式进行检查,一个正确程序必须保证这个boolean表达式的值为...

    编程常用单词总结.txt

    编程常用单词总结 Eclipse中常用的操作单词 Existing Project into Workspace 现有的工程引入工作空间(加载工程) File 文件 New 新建 Project 工程 Folder 文件夹 Import 引入(加载&导入) Run ...

    Java JDK 7学习笔记(国内第一本Java 7,前期版本累计销量5万册)

     《Java JDK 7学习笔记》是作者多年来教学实践的经验总结,汇集了学员在教学过程中遇到的概念、操作、应用或认证考试上的各种问题及解决方案。  《Java JDK 7学习笔记》详细介绍了JVM、JRE、Java SE API、JDK与IDE...

    Java学习总结:57(Properties子类)

    Properties类常用方法如下: No. 方法 类型 描述 1 public Object setProperty(String key,String value) 普通 设置属性 2 public String getProperty(String key) 普通 取得属性,如果key不存在则返回null...

    基于JAVA公共资源模块的设计与开发的毕业设计,通过设计和开发公共资源模块,实现对公共资源的封装和管理,减少重复开发工作

    综上,本设计通过对JAVA公共资源的分析和总结,设计和开发了公共资源模块。该模块的使用,有效提高了开发效率,减少了重复工作,提高了软件质量,为今后类似系统的开发奠定了基础。本设计的实施,为毕业生在实践中运用所学...

    Java学习笔记-个人整理的

    {8.1}线程的常用属性与方法}{121}{section.8.1} {8.2}后台线程}{123}{section.8.2} {8.3}创建线程的两种方法}{123}{section.8.3} {8.4}Runnable}{123}{section.8.4} {8.5}Sleep阻塞与打断唤醒}{124}{section....

    面向对象技术与UML课件及源代码-by 南邮-陈杨

    本书为中南大学精品教材立项项目,分为上下两篇共21章,涵盖了面向对象技术中Java开发环境配置、程序设计基础、面向对象原理以及UML的知识。本书使用的开发环境是JDK 1.6+Eclipse 3.3+Rational Rose 2003,逐步引领...

    ant1.9资源

    在本文中,主要让读者熟悉怎样将Ant应用到Java项目中,让它简化构建和部署操作。 一. 安装与配置 下载地址:http://ant.apache.org/,在本文中下载的是1.7.0版本。解压到某个目录(例如E:"apache-ant-1.7.0),...

    收集的常见的专业问题解决办法.rar

    2009-02-24 08:39 1423088 975149 常见的专业问题解决办法\Java中多态变量的讨论和总结.mht 2009-02-24 08:52 156256 34316 常见的专业问题解决办法\Java中的强制类型转换_Believe ┭┮ YourSelf.mht 2009-02-24 08:...

    springboot知识点整理

    2.4 properties配置文件乱码问题 24 2.5 @ConfigurationProperties与@Value的区别 25 2.6 配置@PropertySource、@ImportResource、@Bean 27 2.7 配置文件占位符 30 2.8 Profile多环境支持 31 2.9 配置文件的加载位置...

    springmybatis

    MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plan Old Java Objects,普通的Java对象)映射成数据库中的记录. orm工具的基本思想 无论是用过的hibernate,mybatis,你都可以法相他们有一个...

    asp.net知识库

    .NET中的方法及其调用(一) 如何判断ArrayList,Hashtable,SortedList 这类对象是否相等 帮助解决网页和JS文件中的中文编码问题的小工具 慎用const关键字 装箱,拆箱以及反射 动态调用对象的属性和方法——性能和...

    ARCH4系统开发指南

    2 常用功能处理方式 9 2.1 如何执行条件查询 9 2.1.1 查询示例 9 2.1.2 查询限制 9 2.1.2.1 Like 9 2.1.2.2 In 10 2.1.2.3 Between 10 2.1.2.4 Equal 10 2.1.2.5 NotEqual 10 2.1.2.6 GreaterThan 10 2.1.2.7 ...

    Struts2入门教程(全新完整版)

    (3).struts.properties(参default.properties) 4 (4)struts-default.xml 4 (5)其它配置文件 4 4.让MyEclipse提示xml信息 4 5.如何使用alt+/提示 4 6.实例 4 7.开启struts2自带的开发模式常量 6 8.vo传参...

    Spring中文帮助文档

    8.3.5. 常用注解 8.3.6. JUnit 3.8遗留支持 8.3.7. Spring TestContext Framework 8.3.8. PetClinic示例 8.4. 更多资源 II. 中间层数据访问 9. 事务管理 9.1. 简介 9.2. 动机 9.3. 关键抽象 9.4. 使用资源...

    Eclipse权威开发指南2.pdf

    7.4.2 扩展用户界面的常用方法.... 186 7.4.3 用户界面的扩展怎样感知某些事件(如用户的选择)?..... 189 7.4.4 怎样扩展对象(如显示在Outline视图中的对象). 193 7.4.5 不同视图中显示的相同对象之间的关系.......

    springBootDemo

    读取Properties 项目源码 Spring Data JPA 的使用 JPA简单概念 快速上手 基本查询 复杂查询 关联查询 项目源码 模板引擎Thymeleaf 简单上手 常用标签汇总 项目源码 JPA 和 Thymeleaf 实践 多环境配置...

    Spring API

    8.3.5. 常用注解 8.3.6. JUnit 3.8遗留支持 8.3.7. Spring TestContext Framework 8.3.8. PetClinic示例 8.4. 更多资源 II. 中间层数据访问 9. 事务管理 9.1. 简介 9.2. 动机 9.3. 关键抽象 9.4. 使用资源...

Global site tag (gtag.js) - Google Analytics