JAVA操作properties文件
java中的properties文件是一种配置文件,主要用于表达配置信息,文件类型为*.properties,格式为文本文件,文件的内容是格式是"键=值"的格式,在properties文件中,可以用"#"来作注释,properties文件在Java编程中用到的地方很多,操作很方便。
Java读取properties文件有六种方法,分别如下
- 使用java.util.Properties类的load()方法
InputStream in = lnew BufferedInputStream(new FileInputStream(name)); Properties p = new Properties(); p.load(in);
- 使用java.util.ResourceBundle类的getBundle()方法
ResourceBundle rb = ResourceBundle.getBundle(name, Locale.getDefault());
- 使用java.util.PropertyResourceBundle类的构造函数
InputStream in = new BufferedInputStream(new FileInputStream(name)); ResourceBundle rb = new PropertyResourceBundle(in);
- 使用class变量的getResourceAsStream()方法
InputStream in = JProperties.class.getResourceAsStream(name); Properties p = new Properties(); p.load(in);
- 使用class.getClassLoader()所得到的java.lang.ClassLoader的getResourceAsStream()方法
InputStream in = JProperties.class.getClassLoader().getResourceAsStream(name); Properties p = new Properties(); p.load(in);
- 使用java.lang.ClassLoader类的getSystemResourceAsStream()静态方法
InputStream in = ClassLoader.getSystemResourceAsStream(name); Properties p = new Properties(); p.load(in);
- Servlet中可以使用javax.servlet.ServletContext的getResourceAsStream()方法
InputStream in = context.getResourceAsStream(path); Properties p = new Properties(); p.load(in);
Properties类的重要方法
Properties 类存在于包 Java.util 中,该类继承自 Hashtable
- getProperty ( String key) , 用指定的键在此属性列表中搜索属性。也就是通过参数 key ,得到 key 所对应的 value。
- load ( InputStream inStream) ,从输入流中读取属性列表(键和元素对)。通过对指定的文件(比如说上面的 test.properties 文件)进行装载来获取该文件中的所有键 - 值对。以供 getProperty ( String key) 来搜索。
- setProperty ( String key, String value) ,调用 Hashtable 的方法 put 。他通过调用基类的put方法来设置 键 - 值对。
- store ( OutputStream out, String comments) , 以适合使用 load 方法加载到 Properties 表中的格式,将此 Properties 表中的属性列表(键和元素对)写入输出流。与 load 方法相反,该方法将键 - 值对写入到指定的文件中去。
- clear () ,清除所有装载的 键 - 值对。该方法在基类中提供。
#Update ‘age‘ value #Sun Nov 25 00:06:11 CST 2012 age=21 password=123456 username=dreamsunday
操作properties文件
package com.properties; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.Enumeration; import java.util.Properties; public class PropertiesTest { // 根据key读取value public static void readValue(String filePath, String key) { Properties properties = new Properties(); try { InputStream in = new BufferedInputStream(new FileInputStream(new File(filePath))); properties.load(in); String value = properties.getProperty(key); System.out.println(key +" = "+ value); } catch (Exception e) { e.printStackTrace(); } } // 读取properties的全部信息 public static void readAllProperties(String filePath) { Properties props = new Properties(); try { InputStream in = new BufferedInputStream(new FileInputStream(new File(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(); } } // 写入properties信息 public static void writeProperties(String filePath, String parameterName, String parameterValue) { Properties properties = new Properties(); try { InputStream is = new FileInputStream(filePath); // 从输入流中读取属性列表(键和元素对) properties.load(is); // 调用 Hashtable 的方法 put。使用 getProperty 方法提供并行性。 // 强制要求为属性的键和值使用字符串。返回值是 Hashtable 调用 put 的结果。 OutputStream os = new FileOutputStream(filePath); properties.setProperty(parameterName, parameterValue); // 以适合使用 load 方法加载到 Properties 表中的格式, // 将此 Properties 表中的属性列表(键和元素对)写入输出流 properties.store(os, "Update ‘" + parameterName + "‘ value"); } catch (IOException e) { System.err.println("Visit " + filePath + " for updating " + parameterName + " value error"); } } public static void main(String[] args) { readValue("config\\info.properties", "username"); writeProperties("config\\info.properties", "age", "21"); readAllProperties("config\\info.properties"); } }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。