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();
}
字節流配置文件中的中文會變成亂碼。