package com.hzk.utils;
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.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.util.Enumeration;
import java.util.Properties; public class PropertiesTools { public static void writeProperties(String filePath, String parameterName,
String parameterValue) {
Properties props = new Properties();
try {
File f = new File(filePath); if (f.exists()) { InputStream fis = new FileInputStream(filePath);
props.load(fis);
fis.close(); } else {
System.out.println(filePath);
f.createNewFile();
} OutputStream fos = new FileOutputStream(filePath);
props.setProperty(parameterName, parameterValue); props.store(fos, "");
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
} public static Properties readProperties(String filePath) {
Properties props = new Properties();
InputStream is;
try {
is = new FileInputStream(filePath);
props.load(is);
is.close();
return props;
} catch (Exception e1) {
e1.printStackTrace();
return null;
} } /**
* 写之前将编码转为iso-8859-1,.propertise的默认编码
* @param data
* @return
*/
public static String iso2utf8(String data){
String result = "";
try {
result = new String(data.getBytes("iso-8859-1"), "utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return result;
} /**
* 读数据的时候转码为utf-8。便于读取
* @param data
* @return
*/
public static String utf82iso(String data){
String result = null;
try {
result = new String(data.getBytes("utf-8"), "iso-8859-1");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return result;
} public static void main(String[] args) {
PropertiesTools.writeProperties("d:\\datas.properties", utf82iso("name"), utf82iso("tom"));
PropertiesTools.writeProperties("d:\\datas.properties", utf82iso("好这口"),utf82iso("hzk"));
PropertiesTools.writeProperties("d:\\datas.properties", utf82iso("hk"),utf82iso("户口"));
Properties props = PropertiesTools.readProperties("d:\\datas.properties");
Enumeration en = props.keys();
while (en.hasMoreElements()) {
String key = (String) en.nextElement();
String keyDecode = iso2utf8(key);
String value =iso2utf8((String) props.getProperty(key));
System.out.println("key:"+keyDecode+" value:"+value);
}
} }

如上面代码所看到的。注意新建的properties文件的默认编码是iso-8859-1,所以想读写中文数据。都要转码,对于中文会显示成一下形式,见datas.properties:

#

#Sat Jun 14 15:38:10 CST 2014

hk=\u00E6\u0088\u00B7\u00E5\u008F\u00A3

name=tom

\u00E5\u00A5\u00BD\u00E8\u00BF\u0099\u00E5\u008F\u00A3=hzk

假设在myeclipse中保存为utf-8形式,再次能够手动输入中文就能够,可是下次一经代码写入再打开又会变为iso-8859-1的乱码,非常是蛋疼,所以要看中文能够通过代码读取转为utf-8,或者只先存为utf-8格式,编辑中文,不要代码写入中文就能够

Properties类读写.properties配置文件的更多相关文章

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

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

  2. java.util.Properties类的介绍-配置文件的读写【-Z-】

    简介:java.util.Properties是对properties这类配置文件的映射.支持key-value类型和xml类型两种. #打头的是注释行,Properties会忽略注释.允许只有key ...

  3. Java中Properties类的操作配置文件

    知识学而不用,就等于没用,到真正用到的时 候还得重新再学.最近在看几款开源模拟器的源码,里面涉及到了很多关于Properties类的引用,由于Java已经好久没用了,而这些模拟器大多用 Java来写, ...

  4. Properties类操作.properties配置文件方法总结

    一.properties文件 Properties文件是java中很常用的一种配置文件,文件后缀为“.properties”,属文本文件,文件的内容格式是“键=值”的格式,可以用“#”作为注释,jav ...

  5. 基于Java Properties类设置本地配置文件

    一.Java Properties类介绍 Java中有个比较重要的类Properties(Java.util.Properties),主要用于读取Java的配置文件,各种语言都有自己所支持的配置文件, ...

  6. 利用Properties类关联相关配置文件

    文件目录 代码: package Lianxi;import java.io.FileInputStream;import java.io.FileNotFoundException;import j ...

  7. 【转】Java 读写Properties配置文件

    [转]Java 读写Properties配置文件 1.Properties类与Properties配置文件 Properties类继承自Hashtable类并且实现了Map接口,也是使用一种键值对的形 ...

  8. Java 读写Properties配置文件

    Java 读写Properties配置文件 JAVA操作properties文件 1.Properties类与Properties配置文件 Properties类继承自Hashtable类并且实现了M ...

  9. (转)Java 读写Properties配置文件

    原文:http://www.cnblogs.com/xudong-bupt/p/3758136.html 1.Properties类与Properties配置文件 Properties类继承自Hash ...

随机推荐

  1. 怎么解决 ubuntu 装kde桌面遇到的汉化问题

    正在读取软件包列表... 完成正在分析软件包的依赖关系树 正在读取状态信息... 完成 现在没有可用的软件包 language-pack-kde-zh,但是它被其它的软件包引用了.这可能意味着这个缺失 ...

  2. 重新想象 Windows 8 Store Apps (3) - 控件之内容控件: ToolTip, Frame, AppBar, ContentControl, ContentPresenter; 容器控件: Border, Viewbox, Popup

    原文:重新想象 Windows 8 Store Apps (3) - 控件之内容控件: ToolTip, Frame, AppBar, ContentControl, ContentPresenter ...

  3. C++ 习题 输出日期时间--友元类

    Description 设计一个日期类和时间类,编写display函数用于显示日期和时间.要求:将Time类声明为Date类的友元类,通过Time类中的display函数引用Date类对象的私有数据, ...

  4. JAVA经BigDecimal圆角的解决方案及注意事项

    /** * @Description: 四舍五入住宿2小数位数 * @param valueName * @return */ public static Double formateDouble45 ...

  5. android得知----overridePendingTransition

    1 Activity动画是指从一个切换activity跳到另一个activity随着电影. 它由两部分组成:第一部分是一个activity动画出口:中的第二个另一部分activity动画被访问: 于A ...

  6. 如何使用SQLite数据库 匹配一个字符串的子串?

    select * from table_name where 字符串 like '%'||列名||'%'

  7. mac提升yosemite后php 扩展修复

    mac升级之后 php 正积极提升自己,导致php环境破坏 所以 例如有以下几点需要修复 1. sudo ln -s /Applications/Xcode.app/Contents/Develope ...

  8. JSON 数据使用

    当用不同的数据的模板需要更换时.假设数据点的量.使用json非常方便. json物: var JSONObject= { "name":"Bill Gates" ...

  9. String、StringBuffer和StringBuilder

    一.String和StringBuffer String类型和StringBuffer类型的主要性能差别事实上在于String是不可变的对象,因此在每次对String类型进行改变的时候事实上都等同于生 ...

  10. Andrid 多线程下载

    本文转自:http://www.2cto.com/kf/201205/130969.html 本文将介绍在android平台下如何实现多线程下载,大家都知道,android平台使用java做为开发语言 ...