利用Spring的Resource类读写中文Properties

原创
2016/04/05 23:59
阅读数 268
package com.oolong.common.util;

import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;
import java.io.*;
import java.util.*;

public class UserVar {
  private static String configFile = "classpath*:param.properties";
  private static org.springframework.core.io.Resource resourceWritable;
  private static Properties p;

  /**
   * 注意事项:
   * 1、properties放在source目录下
   * 2、param.properties至少有一对键值对
   */
  static {
    p = new Properties();
    org.springframework.core.io.Resource[] resources = null;
    try {
      ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
      resources = resolver.getResources(configFile);
      if (resources != null) {
        for (org.springframework.core.io.Resource r : resources) {
          if (r != null) {
            p.load(r.getInputStream());
            resourceWritable = r;
          }
        }
      }
    } catch (IOException e1) {
      e1.printStackTrace();
    }
  }

  public static String get(String key) {
    String v = (String) p.get(key);
    if (v != null) {
      try {
        return new String(v.getBytes("ISO-8859-1"), "GBK");
      } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
        return null;
      }
    }
    return null;
  }

  public static void set(String key,String value){
    if (null != resourceWritable) {
      try {
        OutputStream fos = new FileOutputStream(resourceWritable.getFile());
        Properties p = new Properties();
        p.load(resourceWritable.getInputStream());
        value = new String(value.getBytes("GBK"),"ISO-8859-1");
        p.setProperty(key, value);
        p.store(fos, null);
        fos.close();
      } catch (IOException e) {
        e.printStackTrace();
      }
    }
  }
}


展开阅读全文
打赏
1
1 收藏
分享
加载中
更多评论
打赏
0 评论
1 收藏
1
分享
返回顶部
顶部