- 浏览: 516901 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (278)
- java (41)
- 设计模式 (4)
- sql (10)
- webservice (2)
- spring (9)
- struts (6)
- struts2 (32)
- hibernate (27)
- Struts_hibernate_Spring整合 (4)
- Velocity (1)
- Servlet (9)
- JSP (6)
- javascript (19)
- jquery (10)
- ajax (4)
- html、xml (3)
- JDBC (2)
- JDK (6)
- mysql (2)
- oracle (11)
- SqlServer (1)
- DB2 (4)
- tool (7)
- linux (5)
- UML (1)
- eclipse (8)
- 执行文件 (1)
- 应用服务器 (4)
- 代码重构 (1)
- 日本語 (19)
- 交规 (1)
- office (9)
- firefox (1)
- net (1)
- 测试 (1)
- temp (6)
- 对日外包 (1)
- windows (1)
- 版本控制 (1)
- android (2)
- 项目管理 (1)
最新评论
一、
/* * @(#)RWProperties.java 2010-10-28 * * Copyright 2010 BianJing,All rights reserved. */ package test; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.Properties; /** * 用于读写Property属性配置文件的类 * * @author BianJing<br/> * E-mail:vipbooks@163.com * @version 0.9 2010-10-28 */ public class RWProperties { private Properties properties; /** 配置文件的完整路径 */ private String filePath; /** * 初始化RWProperties * * @param propertyFilePath * 属性配置文件的完整路径, * 如:"com/pagination/config/PaginationConfig.properties" * @return RWProperties的实例 */ public RWProperties(String propertyFilePath) { filePath = propertyFilePath; properties = getProperties(propertyFilePath); }; /** * 获得Key值所对应的Value值。 * * @param key * 属性配置文件的Key值 * @return Key值所对应的Value值 */ public String getProperty(String key) { return properties.getProperty(key); } /** * 修改属性配置文件 * * @param key * 属性配置文件的Key值 * @param value * 属性配置文件的value值 * @param propertyFilePath * 属性配置文件的完整路径, * 如:"com/pagination/config/PaginationConfig.properties" * @return 修改成功返回true,失败则返回false */ public boolean setProperty(String key, String value) { FileOutputStream fos = getFileOutputStream(filePath); properties.setProperty(key, value); boolean flag = false; try { properties.store(fos, null); flag = true; } catch (IOException e) { e.printStackTrace(); } finally { if (fos != null) { try { fos.flush(); fos.close(); } catch (IOException e) { e.printStackTrace(); close(); } finally { fos = null; } } } return flag; } /** * 移除属性配置文件中的某个属性 * * @param key * 属性配置文件的Key值 * @return 移除成功返回true,失败则返回false */ public boolean removeProperty(String key) { FileOutputStream fos = getFileOutputStream(filePath); properties.remove(key); boolean flag = false; try { properties.store(fos, null); flag = true; } catch (IOException e) { e.printStackTrace(); } finally { if (fos != null) { try { fos.flush(); fos.close(); } catch (IOException e) { e.printStackTrace(); close(); } finally { fos = null; } } } return flag; } /** * 释放资源 */ public void close() { if (properties != null) { properties.clear(); } } /** * 返回加载了配置文件的Properties对象 * * @param propertyFilePath * 属性配置文件的完整路径, * 如:"com/pagination/config/PaginationConfig.properties" * @return java.util.Properties */ private Properties getProperties(String propertyFilePath) { Properties properties = new Properties(); InputStream is = null; try { is = RWProperties.class.getClassLoader().getResourceAsStream( propertyFilePath); properties.load(is); } catch (NullPointerException e) { e.printStackTrace(); close(); } catch (IOException e) { e.printStackTrace(); close(); } finally { if (is != null) { try { is.close(); } catch (IOException e) { e.printStackTrace(); } finally { is = null; } } } return properties; } /** * 返回已经加载了配置文件的文件输出流 * * @param propertyFilePath * 属性配置文件的完整路径, * 如:"com/pagination/config/PaginationConfig.properties" * @return java.io.FileOutputStream */ private FileOutputStream getFileOutputStream(String propertyFilePath) { FileOutputStream fos = null; String filePath = null; filePath = RWProperties.class.getClassLoader().getResource( propertyFilePath).getFile(); filePath = filePath.replaceFirst("/", ""); // 如果URL地址中含有空格,则空格会被"%20"替换,所以要将它替换回来 filePath = filePath.replaceAll("%20", " "); try { fos = new FileOutputStream(filePath); } catch (FileNotFoundException e) { e.printStackTrace(); close(); } return fos; } }
二、
package js.thread; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.Properties; /** * アプリ共通ユーティリティクラスです。 * @author * @version $Revision: 1.2 $ */ public final class Util { /** * コンストラクタ。<BR> * <BR> */ private Util() { } /** * 指定したプロパティファイルを読み込む。<BR> * <BR> * 引数のクラス置く場所で、引数のファイルをプロパティファイルとして読み込む。<BR> * @param strFile プロパティファイル名 * @param cls プロパティファイル置く場所(クラス置く場所と同様) * @return Properties 読み込むプロパティ * @throws IOException 読み込む異常の場合 */ @SuppressWarnings ("unchecked") public static Properties loadProp(String strFile, Class cls) throws IOException { Properties pReturn = new Properties(); InputStream input = cls.getClassLoader().getResourceAsStream(strFile);//classpath root //InputStream input1 = cls.getResourceAsStream(strFile);//プロパティファイル置く場所(クラス置く場所と同様) if (input == null) { return null; } try { pReturn.load(input); } finally { try { input.close(); } catch (IOException ioExp) { // do nothing } } return pReturn; } /** * 指定したプロパティファイルを読み込む。<BR> * <BR> * 引数のファイルをプロパティファイルとして読み込む。<BR> * @param strFile プロパティファイル名 * @return Properties 読み込むプロパティ * @throws IOException 読み込む異常の場合 */ public static Properties loadProp(String strFile) throws IOException { Properties pReturn = new Properties(); InputStream input = new FileInputStream(strFile); try { pReturn.load(input); } finally { try { input.close(); } catch (IOException ioExp) { // do nothing } } return pReturn; } /** * 文字列空白チェック関数<BR> * <BR> * 引数の文字列が空白(連続空白も含む)、またはnullの場合、trueを返す。<BR> * それ以外の場合はfalseを返す。 * @param strParam チェック対象文字列 * @return 文字列空白判定結果(true:空白 false:空白ではない) */ public static boolean isStrNull(String strParam) { if (strParam == null) { return true; } if ("".equals(strParam.trim())) { return true; } return false; } /** * 指定文字列から改行を取り外す。<BR> * @param src String 文字列 * @return String 改行を取り外された文字列 */ public static String removeLineBreaks(String src) { String ret = src; if (ret != null) { ret = ret.replace("\r\n", " "); ret = ret.replace("\r", " "); ret = ret.replace("\n", " "); } return ret; } }
package js.thread; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.util.Properties; public abstract class AbstractEnvironment { /** 空白文字列 */ public static final String STR_BLANK = ""; /** 文字コード変換から */ private static final String ENCODE_FROM = "iso-8859-1"; /** 文字コード変換へ */ private static final String ENCODE_TO = "UTF-8"; /** 異常メッセージ */ private static final String FAIL = "設定ファイル読み込む失敗"; /** 設定ファイル */ protected Properties prop; /** 文字コード変換 */ boolean isNeedCodeChg = true; /** * コンストラクタ<BR> * <BR> * 引数より、設定ファイルの内容を読み込む。<BR> * 引数の「cls」がnullの場合、「strFile」を直接ファイルシステムから読み込む、<BR> * 引数の「cls」がnullではないの場合、「cls」のクラスから「strFile」のリソースをシステムから読み込む。<BR> * @param strFile 設定ファイル * @param cls クラス * @throws EnvironmentException 設定ファイル読み込む異常の場合 */ @SuppressWarnings ("unchecked") protected AbstractEnvironment(String strFile, Class cls) throws RuntimeException { try { if (strFile == null) { throw new RuntimeException(FAIL); } if (cls == null) { prop = Util.loadProp(strFile); isNeedCodeChg = false; } else { prop = Util.loadProp(strFile, cls); } if (prop == null) { throw new RuntimeException(FAIL); } } catch (IOException ioExp) { throw new RuntimeException(FAIL); } } /** * 引数の設定キーより、設定値を取得する。<BR> * 設定キーが存在しない場合、空白を返す。 * @param strKey 設定キー * @return String 設定値 */ public String getValue(String strKey) { return getValueByParam(strKey, null); } /** * 引数の設定キーと設定値に埋め込み文字列より、設定値を取得する。<BR> * 埋め込み文字列の置換パターンは{n}となる、「n」が0からの正数字となります。<BR> * メモリ上に保存するメッセージをUTF-8に変換し、返す。<BR> * 設定キーが存在しない場合、空白を返す。 * @param strKey 設定キー * @param strArgs 設定値に埋め込み文字列 * @return String 埋め込み文字列置換後の設定値 */ public String getValueByParam(String strKey, String[] strArgs) { String strValue = prop.getProperty(strKey); if (Util.isStrNull(strValue)) { strValue = STR_BLANK; } else { if (isNeedCodeChg) { try { strValue = new String(strValue.getBytes(ENCODE_FROM), ENCODE_TO); } catch (UnsupportedEncodingException endExp) { strValue = FAIL; } } } if (strArgs != null) { for (int i = 0; i < strArgs.length; i++) { if (strArgs[i] == null) { strValue = strValue.replace("{" + i + "}", STR_BLANK); } else { strValue = strValue.replace("{" + i + "}", Util .removeLineBreaks(strArgs[i])); } } } return strValue; } }
package js.thread; /** * システム設定値を提供する共通用クラスです。<br> * <br> * 運用時に、外部ファイルに設定されたシステム設定値を提供する。<br> * <p> * 用例:<br> * Setting.init();<br> * <br> * String strSetting = Setting.getInstance().getValue("システム設定キー");<br> * </p> * @author * @version $Revision: 1.2 $ */ public final class Setting extends AbstractEnvironment { /** システム設定シングルトン */ private static AbstractEnvironment environment; /** * コンストラクタ<BR> * <BR> * 引数より、システム設定ファイルの内容を読み込む。<BR> * @param strFile システム設定ファイル * @throws EnvironmentException システム設定ファイル読み込む異常の場合 */ private Setting(String strFile) throws RuntimeException { super(strFile, Setting.class); } /** * システム設定クラスを初期化する。<BR> * <BR> * 引数より、システム設定ファイルの内容を読み込む。<BR> * 設定ファイルからUTF-8で保存する内容をiso-8859-1でメモリ上に保存する。 * @param strFile システム設定ファイル * @throws EnvironmentException システム設定ファイル読み込む異常の場合 */ public static void init(String strFile) throws RuntimeException { environment = new Setting(strFile); } /** * システム設定の実例クラスを取得する。<BR> * @return Setting 実例クラス */ public static AbstractEnvironment getInstance() { return environment; } }
package js.thread; public class TestProperties { public static void main(String[] args) { Setting.init("messageResource_en_US.properties"); AbstractEnvironment s = Setting.getInstance(); System.out.println(s.getValue("a")); } }
发表评论
文章已被作者锁定,不允许评论。
-
Java8 ,JDK1.8 新特性
2016-12-08 14:58 773一、接口的默认方法 Java 8允许我们给接口 ... -
Google Guava官方教程 学习
2016-12-05 17:43 346http://ifeve.com/google- ... -
Guava 相关内容(一)
2016-05-20 00:08 519一、Java 不可以变的集合 Guava学习笔记: ... -
poi excel 相关
2015-04-07 11:22 690一、poi excel 分组(group) ... -
java 相关问题(四)
2013-05-24 15:54 1244十九、Java中对Map(HashMap,TreeMap, ... -
apache-common
2013-01-09 10:47 1047... -
Java注释的写法
2012-11-16 15:02 781一. Java 文档 // 注释 ... -
正则表达式
2012-05-25 09:19 973编程的大量工作都是在处理字符串,如验证输入、查 ... -
java 相关问题(三)
2012-03-08 16:31 1502十三、java 实现 调用 打印机 代码详解 ... -
J2EE秘籍
2012-02-13 15:42 719转:http://zhufeng1981.iteye.com/ ... -
java 相关问题(二)
2011-08-02 15:47 1091七、ThreadLocal 详解 首先,Thre ... -
Apache Commons BeanUtils
2011-06-08 17:24 1545功能说明: 顾名思义,Bean Utility就是Bean小 ... -
java 相关问题(一)
2011-05-10 19:16 1031一、 java Cloneable 详 ... -
JMS API 中文版
2011-04-13 14:20 826转:http://www.iteye.com/to ... -
ant 教程
2011-04-12 23:56 1156一、ant 教程 1 Ant是什么? ... -
properties 文件中 定义内容 相关问题
2011-02-22 20:41 2264一、在 properties 文件中 定义{ } 会 ... -
java 线程
2011-02-10 17:07 923一、 Runnable、 Thread ... -
java.util.logging (不用log4j配置,自己写log文件)
2010-10-11 11:55 7450<!-- Generated by javadoc ( ... -
java 静态块 非静态块
2010-09-21 17:39 1416一。一个简单的例子 1. 所有静态的(无论其是变量 ... -
java MessageFormat
2010-09-21 11:03 3506一。 MessageFormat 提供了以 ...
相关推荐
### Java读写Properties配置文件详解 #### 一、引言 在Java开发中,`Properties`类被广泛用于处理各种类型的配置文件。这些文件通常包含了应用程序运行时所需的配置信息,如数据库连接信息、系统参数等。`...
在Java编程中,Properties文件是用于存储配置信息的关键组件,如数据库连接字符串、应用程序设置等。在处理Properties文件时,可能会遇到几个常见的问题,包括找不到指定路径、读取正常但文件数据未更新的情况。以下...
总结一下,处理Java中的Properties文件读写时,需要注意文件路径的准确性、文件的读写权限以及缓存问题。通过以上方法,应该能够有效解决描述中提到的问题。对于提供的"新建文本文档.txt",虽然不是Properties文件,...
在Java编程中,`properties`文件是用于存储应用程序配置信息的一种简单文本格式。这些文件通常包含键值对,其中键和值之间用等号或冒号分隔。本篇文章将详细探讨如何在Java中读取、写入、修改以及删除`properties`...
Java读写properties文件解决中文乱码问题 Java读写properties文件是在Java开发中一种常见的配置文件读写方式,但是在读写properties文件时,经常会遇到中文乱码问题。下面将详细介绍Java读写properties文件解决中文...
这个压缩包“Java源码读写Properties文件.rar”包含了一份关于如何使用Java来读取和写入Properties文件的源代码示例。下面我们将详细探讨这个主题。 首先,Properties类是Java的标准库类,位于`java.util`包下,它...
Java中的Properties类是处理配置文件的关键工具,它用于存储应用程序的配置信息,这些信息通常以键值对的形式存在,键和值都是字符串类型。Properties类继承了Hashtable类,并且实现了Map接口,这意味着它可以像Map...
在Java编程中,读写`.properties`文件是一个常见的任务,这些文件通常用于存储配置信息、设置或环境变量。本文将深入探讨如何在Java中高效地处理`.properties`文件,包括读取、写入以及更新其内容。我们将参考提供的...
在Java代码中,首先需要导入`java.util.Properties`和`java.io.*`等相关的类库,以便进行读写Properties文件的操作。 2. **加载Properties文件** 使用`Properties`类的`load()`方法加载Properties文件。这个方法...
自己定义一个属性文件:例如prop.properties baseFilePath=D:/kuanter/resource tesx=abcd 我们要做的第一步是要将文件读取到Properties类对象中,由于load有一个参数是InputStream,所以我们可以用 ...
在Java编程中,操作配置文件,尤其是`.properties`文件,是一项常见的任务。`.properties`文件主要用于存储应用程序的配置信息,通常包含键值对,其中键是唯一的标识符,值是与该键相关联的数据。Java提供了`java....
- 锁定与并发:如果多个线程同时读写`Properties`对象,需考虑同步控制,以避免数据不一致。 通过以上内容,你应该能够理解并实现Java中读取`properties`配置文件的基本操作。在实际项目中,还可以结合Spring框架...
本篇文章将深入探讨如何解决Java读写.properties文件时的中文乱码问题。 首先,了解.properties文件的特性。这种文件的默认编码通常是ISO-8859-1,它不支持中文字符。因此,当文件中含有中文时,必须明确指定读写时...
在处理`.properties`文件时,可能会遇到文件找不到、读写权限不足等问题。因此,需要适当地捕获和处理`IOException`。 ### 8. 使用`@ConfigurationProperties` Spring框架提供了一种更高级的方式来绑定`....
javaproperties通过基于json模块的简单API提供对读写(简单的面向行格式和XML)的支持-尽管,为了恢复Java迷,它还包括旨在匹配行为的Properties类。 Python 尽可能多地使用 。 javaproperties版本的javaproperties...
Java自带的Properties不好用,自己写了一个直接读写类,支持配置文件描述,支持对像值的描述,支持指定文件编码(默认UTF-8)
Java Properties 类是Java标准库中用于处理配置文件的关键组件,主要负责存储和加载键值对数据,常用于管理应用程序的配置信息。配置文件通常以`.properties`为扩展名,采用文本格式,每行包含一个键值对,键和值...
这个类提供了一种存储和加载属性列表的方法,它能够处理`.properties`文件的读写操作。 1. 加载`properties`文件: 要读取`properties`文件,我们首先需要创建一个`Properties`对象,然后使用`load()`方法从输入流...
然而,在读写Properties文件时,需要注意元素的顺序,因为Properties继承自HashTable,直接通过keySet()、keys()或entrySet()方法对Properties中的元素进行遍历时取出来的内容顺序与properties文件中的顺序不一致。...
在Python编程中,有时我们需要处理Java开发中常用的`.properties`配置文件。虽然Python标准库并未直接提供处理此类文件的模块,但我们可以自定义一个类来实现这个功能。本篇文章将详细探讨如何通过Python来读取并...