java对properties文件进行解析,在用java自带的properties类进行properties文件解析的时候,输出的时候很可能出现乱码问题,在开始的时候我也是找不到问题,查出了之后,贴出来跟大家分享。作者:xulong1516519
package properties; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.util.Enumeration; import java.util.Properties; public class PropertiesUtil { private String filename = "e:/temp/config.properties"; // private String filename = "config.properties"; private Properties p; private FileInputStream in; private FileOutputStream out; public PropertiesUtil() { File file = new File(filename); try { in = new FileInputStream(file); p = new Properties(); p.load(in); in.close(); } catch (FileNotFoundException e) { System.err.println("配置文件config.properties找不到!"); e.printStackTrace(); } catch (IOException e) { System.err.println("读取配置文件config.properties错误!"); e.printStackTrace(); } } public String getValue(String itemName) { return p.getProperty(itemName); } public String getValue(String itemName, String defaultValue) { return p.getProperty(itemName, defaultValue); } public void setValue(String itemName, String value) { p.setProperty(itemName, value); } public void saveFile(String filename, String description) throws Exception { try { File f = new File(filename); out = new FileOutputStream(f); p.store(out, description); out.close(); } catch (IOException ex) { throw new Exception("无法保存指定的配置文件:" + filename); } } public void getNameValuePair() { Enumeration<Object> enumKeys= p.keys(); while(enumKeys.hasMoreElements()) { String key= (String)enumKeys.nextElement(); try { //p.getProperty(key)本身解析的时候可能已经做过一次转码转码方式可能就是ISO8859-1所以得先通过这种转码过来 System.out.println(key+"--->"+new String(p.getProperty(key).getBytes("ISO8859-1"), "gbk")); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } } public void saveFile(String filename) throws Exception { saveFile(filename, ""); } public void saveFile() throws Exception { if (filename.length() == 0) throw new Exception("需指定保存的配置文件名"); saveFile(filename); } public void deleteValue(String value) { p.remove(value); } public static void main(String[] A) { PropertiesUtil propertiesUtil = new PropertiesUtil(); propertiesUtil.getNameValuePair(); } } //另外有人说properties文件的写法:name=value还有人说name:value有人说只能是其中一种其实都行properties源码有解释。