java 读取文件可以用字节流和字符流。 由于一个汉字占两个字节,所以如果配置文件中有汉字,用字节流读取,会出现乱码。 用字符流则不会出现乱码。
配置文件 b.properties 文件如下:
family\ name = zhou
second name = dingzhao
gender = male
tel no. = +86 (-) 13913462
salary = 0.001k
职业 =java & 工程师
读取配置文件的代码如下:
Properties pro = new Properties();
try {
FileReader in2 = new FileReader(new File("I:\\Workspaces\\MyWork\\xcserver\\src\\com\\xiaocong\\user\\service\\b.properties"));
pro.load(in2);
System.out.println(pro.getProperty("family name"));
Iterator<String> it=pro.stringPropertyNames().iterator();
while(it.hasNext()){
String key=it.next();
System.out.println(key+":"+pro.getProperty(key));
}
in2.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
System.out.println(pro.getProperty("职业"));
输出:
zhou
second:name = dingzhao
tel:no. = +86 (-) 139133462
family name:zhou
gender:male
salary:0.001k
职业:java & 工程师
java & 工程师
注:
1、配置文件中有空格的话,需要用 \ 转义符。
2、pro.getProperty("职业") getProperty(key)方法可以取得配置文件中变量的值。
字节流代码如下:
Properties pro = new Properties();
try {
InputStream in2 = new BufferedInputStream (new FileInputStream("I:\\Workspaces\\MyWork\\xcserver\\src\\com\\xiaocong\\user\\service\\a.properties"));
pro.load(in2);
System.out.println(pro.getProperty("family name"));
Iterator<String> it=pro.stringPropertyNames().iterator();
while(it.hasNext()){
String key=it.next();
System.out.println(key+":"+pro.getProperty(key));
}
in2.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
字节流配置文件中的中文会变成乱码。