Java的Properties类

Posted lay2017

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java的Properties类相关的知识,希望对你有一定的参考价值。

Java在util包下提供了一个Properties类来操作Properties资源文件:

public class Properties extends Hashtable<Object, Object>

它继承了Hashtable<Object, Object> 是 Dictionary<K,V>的间接子类。

同时,它实现了Serializable, Cloneable, Map<Object, Object> 接口。

直接的子类是Provider

 

Properties类表示属性的持久化,在程序中的属性通常是暂时存在的。如果我们需要让属性长久存在,那么就需要把属性存入数据库或者文件当中,Properties类用来将属性存入properties文件当中,以持久化。

Properties可保存在流中或者从流当中加载,属性列表中每一个键值都是字符串。

它实现了Map接口,当然也可以使用put等方法,但是不建议使用put,因为该方法允许其值是非字符形,所以为了值的安全,我们建议使用setProperty方法,这样在编译期就可以检查值是否正确。

如果是xml文件格式来存储properties属性,那么需要声明

<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">

例如:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<entry key="age">40</entry>
<entry key="name">lay</entry>
</properties>

API详见:

方法摘要
 String getProperty(String key) 
          用指定的键在此属性列表中搜索属性。
 String getProperty(String key, String defaultValue) 
          用指定的键在属性列表中搜索属性。
 void list(PrintStream out) 
          将属性列表输出到指定的输出流。
 void list(PrintWriter out) 
          将属性列表输出到指定的输出流。
 void load(InputStream inStream) 
          从输入流中读取属性列表(键和元素对)。
 void load(Reader reader) 
          按简单的面向行的格式从输入字符流中读取属性列表(键和元素对)。
 void loadFromXML(InputStream in) 
          将指定输入流中由 XML 文档所表示的所有属性加载到此属性表中。
 Enumeration<?> propertyNames() 
          返回属性列表中所有键的枚举,如果在主属性列表中未找到同名的键,则包括默认属性列表中不同的键。
 void save(OutputStream out, String comments) 
          已过时。 如果在保存属性列表时发生 I/O 错误,则此方法不抛出 IOException。保存属性列表的首选方法是通过 store(OutputStream out, String comments) 方法或 storeToXML(OutputStream os, String comment) 方法来进行。
 Object setProperty(String key, String value) 
          调用 Hashtable 的方法 put
 void store(OutputStream out, String comments) 
          以适合使用 load(InputStream) 方法加载到 Properties 表中的格式,将此 Properties 表中的属性列表(键和元素对)写入输出流。
 void store(Writer writer, String comments) 
          以适合使用 load(Reader) 方法的格式,将此 Properties 表中的属性列表(键和元素对)写入输出字符。
 void storeToXML(OutputStream os, String comment) 
          发出一个表示此表中包含的所有属性的 XML 文档。
 void storeToXML(OutputStream os, String comment, String encoding) 
          使用指定的编码发出一个表示此表中包含的所有属性的 XML 文档。
 Set<String> stringPropertyNames() 
          返回此属性列表中的键集,其中该键及其对应值是字符串,如果在主属性列表中未找到同名的键,则还包括默认属性列表中不同的键。
// 个别方法使用样例
public
class test { public static void main(String[] args) { InputStream inputStream = null; // 从xml中读取 inputStream = test.class.getResourceAsStream("/fileXml.xml"); Properties user = new Properties(); try { user.loadFromXML(inputStream); user.setProperty("age", "40"); System.out.println(user.getProperty("name")); System.out.println(user.getProperty("age")); // 获取项目路径 String path = test.class.getResource("/").getPath(); System.out.println(path); // 输出为xml, 默认为 utf-8 user.storeToXML(new FileOutputStream(path + "/file.xml"), "评论内容"); user.list(System.out); } catch (IOException e) { e.printStackTrace(); } } }

 

















以上是关于Java的Properties类的主要内容,如果未能解决你的问题,请参考以下文章

elasticsearch代码片段,及工具类SearchEsUtil.java

求用java读写properties文件的代码

关于java中的properties的问题

Java Properties集合代码详解

java通过配置文件(Properties类)连接Oracle数据库代码示例

java代码怎么获取properties文件的内容