JAVA Properties工具类

来源:互联网 发布:郑州淘宝加盟诈骗罪 编辑:程序博客网 时间:2024/04/28 16:55

         今天遇到一个问题就是new FileInputStream(“”)不能获取相对路径的输入流,只能写绝对路径才能访问。

本人通过参考一些文件现总结如下:

1、首先是加载property属性文件

private static Properties properties;
 private static Logger log = Logger.getLogger(Configuration.class);
 
 private final static String PropfilePath = "load/proptertyFIle/system.properties";

static{
  InputStream in = null;
  properties = new Properties();
  try {
   String path = Thread.currentThread().getContextClassLoader().getResource("").getPath();
   //in = new BufferedInputStream (new FileInputStream(path + "/system.properties"));
   
   in = Configuration.class.getClassLoader().getResourceAsStream(PropfilePath);
   properties.load(in);

  } catch (FileNotFoundException ex) {
   log.error("Cannot find file [system.properties].");
   ex.printStackTrace();
  } catch (IOException ex) {
   log.error("Read file[system.properties] Error.");
   ex.printStackTrace();
  } finally {

   try {
    if (in != null)
     in.close();
   } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
  }

2、有key获取value

public static String  getValue(String key) {
  if (properties.containsKey(key)) {
   // 得到某一属性的值
   String value = properties.getProperty(key);
   return value;
  } else
   return "";
 }

3、读取properties

public static void readProperties(String filePath) {
        Properties props = new Properties();
        try {
            InputStream in = new BufferedInputStream((new FileInputStream(filePath)));
            props.load(in);
            Enumeration en = props.propertyNames();
            while (en.hasMoreElements()) {
                String key = (String) en.nextElement();
                String Property = props.getProperty (key);
                System.out.println(key+Property);
             }
        } catch (Exception e) {
         e.printStackTrace();
        }
    }
 4、 //写入propertity信息

public static void writeProperties(String filePath,String parameterName,String parameterValue) {
     Properties prop = new Properties();
     try {
        InputStream fis = new FileInputStream(filePath);
        //从输入流中读取属性列表(键和元素对)
        prop.load(fis);
        //调用 Hashtable 的方法 put。使用 getProperty 方法提供并行性。
        //强制要求为属性的键和值使用字符串。返回值是 Hashtable 调用 put 的结果。
        OutputStream fos = new FileOutputStream(filePath);
       prop.setProperty(parameterName, parameterValue);
        //以适合使用 load 方法加载到 Properties 表中的格式,
        //将此 Properties 表中的属性列表(键和元素对)写入输出流
        prop.store(fos, "Update '" + parameterName + "' value");
        } catch (IOException e) {
          System.err.println("Visit "+filePath+" for updating "+parameterName+" value error");
        }

}

5、测试

public static void main(String[] args) throws IOException {
  System.out.println(Configuration.getValue("saveDays"));
  System.out.println(new File("system.properties").getPath());
  //注意需要绝对路径  提供字符串做参数的话,new FileInputStream需要写绝对路径。
  Configuration.readProperties("D:\\myeclipseWorkplace\\test\\src\\load\\proptertyFIle\\system.properties");
  
  System.out.println(System.getProperty("user.dir")); 
  
  Configuration.writeProperties("D:\\myeclipseWorkplace\\test\\src\\load\\proptertyFIle\\system.properties", "insert", "this is a test data");

 }

 

 

 

 

 

 

原创粉丝点击