因为项目需要,写了一个properties文件的存储与读取一些系统变量。
在有中文的情况下,文件存储正常,文件读取有问题,读取出来的value是一些格式化的字符,例如:\u2050;
?
properties文件读取代码:
public PropertiesAnalyze(){ prop = new Properties(); File f = new File(this.path); BufferedReader read = null; try { read = new BufferedReader(new FileReader(f)); String tempString = read.readLine(); // 一次读入一行,直到读入null为文件结束 while (tempString != null) { // tempString = tempString.trim(); if(tempString.contains("=")){ String s[] = tempString.split("="); this.map.put(s[0].trim(), s[1].trim()); } tempString = read.readLine(); } read.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ if (read != null) { try { read.close(); } catch (IOException e1) { } } } }
?使用这种方式读取出来的就是中文“乱码”。
?
之后改用properties类来读取文件:
public PropertiesAnalyze(){ prop = new Properties(); File f = new File(this.path); BufferedReader read = null; try { read = new BufferedReader(new FileReader(f)); prop.load(read); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ if (read != null) { try { read.close(); } catch (IOException e1) { } } } }
?用这种方式读取文件中的中文字符没有问题。