java对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源码有解释。

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/10672.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论