Properties类读写.properties配置文件

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配置文件,布布扣,bubuko.com

时间: 2024-10-24 07:16:12

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

Java 读写Properties配置文件

Java 读写Properties配置文件 1.Properties类与Properties配置文件 Properties类继承自Hashtable类并且实现了Map接口,也是使用一种键值对的形式来保存属性集.不过Properties有特殊的地方,就是它的键和值都是字符串类型. 2.Properties中的主要方法 (1)load(InputStream inStream)   这个方法可以从.properties属性文件对应的文件输入流中,加载属性列表到Properties类对象.如下面的代码

【转】Java 读写Properties配置文件

[转]Java 读写Properties配置文件 1.Properties类与Properties配置文件 Properties类继承自Hashtable类并且实现了Map接口,也是使用一种键值对的形式来保存属性集.不过Properties有特殊的地方,就是它的键和值都是字符串类型. 2.Properties中的主要方法 (1)load(InputStream inStream)   这个方法可以从.properties属性文件对应的文件输入流中,加载属性列表到Properties类对象.如下面

Properties类与配置文件

//加载文件public static void testLoadProperties() throws Exception { Properties properties = new Properties(); InputStream in = new FileInputStream("E:/itcast/config.properties"); properties.load(in); // 加载 in.close(); System.out.println(properties)

Java 读写Properties配置文件(转)

1.Properties类与Properties配置文件 Properties类继承自Hashtable类并且实现了Map接口,也是使用一种键值对的形式来保存属性集.不过Properties有特殊的地方,就是它的键和值都是字符串类型. 2.Properties中的主要方法 (1)load(InputStream inStream)   这个方法可以从.properties属性文件对应的文件输入流中,加载属性列表到Properties类对象.如下面的代码: Properties pro = new

Java 读写Properties配置文件【转】

1.Properties类与Properties配置文件 Properties类继承自Hashtable类并且实现了Map接口,也是使用一种键值对的形式来保存属性集.不过Properties有特殊的地方,就是它的键和值都是字符串类型. 2.Properties中的主要方法 (1)load(InputStream inStream)   这个方法可以从.properties属性文件对应的文件输入流中,加载属性列表到Properties类对象.如下面的代码: Properties pro = new

(转)Java 读写Properties配置文件

原文:http://www.cnblogs.com/xudong-bupt/p/3758136.html 1.Properties类与Properties配置文件 Properties类继承自Hashtable类并且实现了Map接口,也是使用一种键值对的形式来保存属性集.不过Properties有特殊的地方,就是它的键和值都是字符串类型. 2.Properties中的主要方法 (1)load(InputStream inStream)   这个方法可以从.properties属性文件对应的文件输

java ->properties类

Properties类介绍 Properties 类表示了一个持久的属性集.Properties 可保存在流中或从流中加载.属性列表中每个键及其对应值都是一个字符串. 特点: 1.Hashtable的子类,map集合中的方法都可以用. 2.该集合没有泛型.键值都是字符串. 3.它是一个可以持久化的属性集.键值可以存储到集合中,也可以存储到持久化的设备(硬盘.U盘.光盘)上.键值的来源也可以是持久化的设备. 4.有和流技术相结合的方法. l  load(InputStream)  把指定流所对应的

IO流之Properties类

Properties类介绍 Properties 类表示了一个持久的属性集.Properties 可保存在流中或从流中加载.属性列表中每个键及其对应值都是一个字符串. 特点: 1.Hashtable的子类,map集合中的方法都可以用. 2.该集合没有泛型.键值都是字符串. 3.它是一个可以持久化的属性集.键值可以存储到集合中,也可以存储到持久化的设备(硬盘.U盘.光盘)上.键值的来源也可以是持久化的设备. 4.有和流技术相结合的方法. l  load(InputStream)  把指定流所对应的

Java读写配置文件——Properties类的简要使用笔记

任何编程语言都有自己的读写配置文件的方法和格式,Java也不例外. 在Java编程语言中读写资源文件最重要的类是Properties,功能大致如下: 1. 读写Properties文件 2. 读写XML文件 3. 不仅可以读写上述两类文件,还可以读写其它格式文件如txt等,只要符合key=value格式即可. 注意:资源文件中含有中文时的处理方法 1. 将中文字符通过工作转成utf8编码,可以通过Java自带的nativetoascii或Eclipse中的属性编辑器. 2. 直接调用 new S