读取中文Properties文件

原创 2006年06月15日 15:08:00

    private String propFileName = null;
    //locale = language+country(比如:zh_CN)
    private Locale curLocale = null;

   public ResourceMessage(String baseName) {
       this(baseName, Locale.getDefault());
    }
    public ResourceMessage(String baseName ,Locale locale) {
        curLocale = locale;
        propFileName = FileOperator.getCurrentDir() + (baseName+"_"+curLocale+".properties");
        bundle = ResourceBundle.getBundle(baseName,curLocale);
    }
    public ResourceMessage(String baseName, String language, String country){
        this(baseName, new Locale(language,country));
    }

   //============================= Properties 操作 ========================================//
    public void updateProperty(String pKey,String pValue)throws Exception{
        Properties props = loadProperties();
        props.setProperty(pKey,pValue);
        storeProperties(props);
    }
    public void deleteProperty(String pKey) throws Exception{
     Properties props = loadProperties();
        props.remove(pKey);
        storeProperties(props);
    }
    public void clearProperty() throws Exception{
     Properties props = loadProperties();
     for (Enumeration enum=props.keys();enum.hasMoreElements();){
            props.remove(enum.nextElement());
     }
        storeProperties(props);
    }
    public void addProperty(String pKey,String pValue) throws Exception{
       Properties props = loadProperties();
       if (props.containsKey(pKey)){
       throw new Exception("已经存在该属性名:"+pKey);
       }
       StringBuffer buffer = new StringBuffer(pKey);
       buffer.append("=");
       buffer.append(pValue);
       FileOperator.appendChars(propFileName, buffer.toString());
    }

    public String toString(){
        return propFileName;
    }

    private Properties loadProperties() throws FileNotFoundException,IOException{
       String[] content = Tools.splitStr(new String(FileOperator.readChars(propFileName)),"/n");
       Properties props = new Properties();
       String propKey;
       for (int i=0; i<content.length; i++){
           int index = content[i].indexOf("=");
           if (index != -1){
              propKey = content[i].substring(0, index).trim();
              props.put(propKey, content[i].substring(index + 1).trim());
           }
       }
       return props;
    }
    private void storeProperties(Properties props) throws FileNotFoundException,IOException{
       StringBuffer content = new StringBuffer("#"+new java.util.Date());
       String keyName = null;
       for(Enumeration keys=props.keys();keys.hasMoreElements();){
          keyName = (String)keys.nextElement();
          content.append("/n");
          content.append(keyName);
          content.append("=");
          content.append(props.getProperty(keyName));
       }
       char[] chars = new char[content.length()];
       content.getChars(0,chars.length, chars,0);
       FileOperator.writeChars(propFileName, chars);
    }

    private String getProperty(String pKey){
       String message = "";
       try{
          message = bundle.getString(pKey);
       }catch(Exception e){
          System.err.println("Warning: Can't find the key '"+pKey+"' in "+ toString());
       }
       return message;
    }
    public String readProperty(String pKey){
       String message = "";
       try{
          Properties props = loadProperties();
          message = props.getProperty(pKey, "");
       }catch(Exception e){
          System.err.println("Error: "+e.getMessage());
       }
       if (message.equals("")){
          System.err.println("Warning: Can't find the key '"+pKey+"' in "+ toString());
       }
       return message;
    }
    //////////////////////
    public InputStream readFileInJar(String pathInJar){
       InputStream stream = (InputStream)java.security.AccessController.doPrivileged(
             new java.security.PrivilegedAction() {  //接口
                 ClassLoader loader =  ResourceMessage.class.getClassLoader();
                 public Object run(){
                    if (loader != null){
                       return loader.getResourceAsStream("");
                    }else{
                       return ClassLoader.getSystemResourceAsStream("");
                    }
                 }
             }
          );
       return stream;
    }
    public InputStream get(){
       InputStream stream = (InputStream)java.security.AccessController.doPrivileged(
            new java.security.PrivilegedAction() {
                   ClassLoader loader =  ResourceMessage.class.getClassLoader();
                   public Object run() {
                       System.out.println("========="+loader.getResource("TestRes_zh_CN.properties"));
                       if (loader != null) {
                           return loader.getResourceAsStream("TestRes_zh_CN.properties");
                       } else {
                           return ClassLoader.getSystemResourceAsStream("TestRes_zh_CN.properties");
                       }
                   }
               }
           );
       return stream;
    }


    public static void main(String args[])throws Exception{
        ResourceMessage handler = new ResourceMessage("TestRes");
//        Object[] warnings = {new java.util.Date(),new java.util.Date(),"1212"};
//        System.out.println(handler.getMessage("warning", warnings));
//        Object[] indicates = {"熊水林","zhonglf"};
//        System.out.println(handler.getMessage("indicate", indicates));
        handler.get();
        System.out.println(handler.getProperty("warning"));
        System.out.println(handler.readProperty("姓名")+"=========");

    }

}

Java读写.properties文件实例,解决中文乱码问题

一般使用到properties配置文件,一般都是在spring项目里面,直接由框架帮你读,当然,你也得考虑到编码的问题。 但是现在要是要求使用Java直接读写properties文件,就发现很多的问题...
  • qq_27093465
  • qq_27093465
  • 2017年04月25日 19:32
  • 11462

SSM中读取properties文件乱码问题

今天对自己代码测试中遇到了读取properties的乱码问题,一开始因为自己脑子抽了使用了一个eclipse的一个配置文件编辑插件,导致去掉插件后配置文件全部乱码. 然后又加上插件一步步使用CV大法...
  • qq791846886
  • qq791846886
  • 2017年04月24日 17:43
  • 252

IDEA查看properties文件中文显示问题

IDEA查看properties文件中文显示问题。IDEA版本为14.1.5,不过设置应该都差不多。...
  • lzjansing
  • lzjansing
  • 2016年01月27日 11:39
  • 3433

eclipse中.properties文件中文查看编辑

可以将.properties文件中uncode编码中文转换为简体中文
  • wo88798
  • wo88798
  • 2017年05月08日 18:10
  • 477

properties文件第一行请空出来

问题描述: 项目启动的时候, 报出了找不到properties文件中的一个key的错误, 具体错误信息如下 java.util.MissingResourceException: Can't find...
  • pansanday
  • pansanday
  • 2015年11月18日 00:14
  • 1386

Java properties文件里中文数据显示在页面时乱码

1. 问题描述     在进行国际化的时候,xxx_zh.properties文件中设置好中文信息,propertie...
  • m0_37589327
  • m0_37589327
  • 2017年11月10日 17:29
  • 99

eclipse的.properties文件中文显示问题

eclipse的.properties文件,默认的编码方式是iso-8859-1. 所以中文显示有问题。 按照下面的方式,把Default Encoding修改成UTF-8就可以了。...
  • grpideas
  • grpideas
  • 2015年07月18日 19:42
  • 39471

spring mvc properties 中文乱码

properties中加了配置,有中文,不设置一下的话,注入bean读出来的是乱码,是这样的:{1,"֪ͨÊé±àºÅ"},{2£¬"ѧÉúÁбí"}在spring-servlet.xml中设...
  • wyljz
  • wyljz
  • 2016年12月02日 11:19
  • 854

解决Eclipse中.properties文件中文乱码问题

.properties文件中文乱码问题的解决
  • qq_33530388
  • qq_33530388
  • 2017年05月18日 18:11
  • 10445

读取properties文件的几种方式

先看一下文件在项目中的位置(这也是一般项目中的位置) 文件内的内容: #图片服务器的地址 IMAGE_SERVER_URL=http://192.168.25.133/ 注:...
  • gwd1154978352
  • gwd1154978352
  • 2017年08月23日 21:37
  • 758
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:读取中文Properties文件
举报原因:
原因补充:

(最多只允许输入30个字)