20220210 java.util.Properties

java.util.Properties

基本信息

  • public class Properties extends Hashtable<Object,Object>
  • rt.jar
  • 引入版本:1.0

使用说明

  • Properties 类表示了一个持久的属性集。Properties 可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串。

  • 一个属性列表可包含另一个属性列表作为它的“默认值”;如果未能在原有的属性列表中搜索到属性键,则搜索第二个属性列表。 java.util.Properties#defaults

  • 因为 Properties 继承于 Hashtable,所以可对 Properties 对象应用 putputAll 方法。但不建议使用这两个方法,因为它们允许调用者插入其键或值不是 String 的项。相反,应该使用 setProperty 方法。如果在“不安全”的 Properties 对象(即包含非 String 的键或值)上调用 storesave 方法,则该调用将失败。类似地,如果在“不安全”的 Properties 对象(即包含非 String 的键)上调用 propertyNameslist 方法,则该调用将失败。

  • load(Reader) / store(Writer, String) 方法按下面所指定的、简单的面向行的格式在基于字符的流中加载和存储属性。除了输入/输出流使用 ISO 8859-1 字符编码外,load(InputStream) / store(OutputStream, String) 方法与 load(Reader)/store(Writer, String) 对的工作方式完全相同。可以使用 Unicode 转义来编写此编码中无法直接表示的字符;转义序列中只允许单个 u 字符。可使用 native2ascii 工具对属性文件和其他字符编码进行相互转换。

  • loadFromXML(InputStream)storeToXML(OutputStream, String, String) 方法按简单的 XML 格式加载和存储属性。默认使用 UTF-8 字符编码,但如果需要,可以指定某种特定的编码。XML 属性文档具有以下 DOCTYPE 声明:

    <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
    
  • 注意,导入或导出属性时 访问系统 URI (http://java.sun.com/dtd/properties.dtd);该系统 URI 仅作为一个唯一标识 DTD 的字符串:

    <?xml version="1.0" encoding="UTF-8"?>
    
    <!-- DTD for properties -->
    
    <!ELEMENT properties ( comment?, entry* ) >
    
    <!ATTLIST properties version CDATA #FIXED "1.0">
    
    <!ELEMENT comment (#PCDATA) >
    
    <!ELEMENT entry (#PCDATA) >
    
    <!ATTLIST entry key CDATA #REQUIRED>
    

继承关系

img

类属性

类属性
protected Properties defaults;
一个属性列表,包含属性列表中所有未找到值的键的默认值。

构造方法

构造方法
Properties()
创建一个无默认值的空属性列表。
Properties(Properties defaults)
创建一个带有指定默认值的空属性列表。

公共方法

类实例方法

实例方法
Object setProperty(String key, String value)
调用 Hashtable 的方法 put ,加入属性对
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)
从输入流、输入字符流中读取属性列表(键和元素对)。
Enumeration<?> propertyNames()
返回属性列表中所有键的枚举,如果在主属性列表中未找到同名的键,则包括默认属性列表中不同的键。
Set<String> stringPropertyNames()
返回此属性列表中的键集,其中该键及其对应值是字符串,如果在主属性列表中未找到同名的键,则还包括默认属性列表中不同的键。
void store(OutputStream out, String comments)
void store(Writer writer, String comments)
将此 Properties 表中的属性列表(键和元素对)写入输出流、输出字符流
void storeToXML(OutputStream os, String comment)
void storeToXML(OutputStream os, String comment, String encoding)
发出一个表示此表中包含的所有属性的 XML 文档,可以指定编码
void loadFromXML(InputStream in)
将指定输入流中由 XML 文档所表示的所有属性加载到此属性表中。

示例代码

public class TestProperties {
    public static void main(String[] args) throws Exception {
        Properties properties = new Properties();
        properties.setProperty("A", "a");

        Properties childProperties = new Properties(properties);
        System.out.println(childProperties.getProperty("A"));   // a

        properties.load(new FileInputStream("E:\\Develop\\workspace\\LaGou\\stage10\\mytest\\src\\main\\resources\\test.properties"));  // 包含之前 setProperty 存入的属性

        System.out.println(properties);


        properties.store(new FileWriter("d:\\tt.properties"), "testhwj");
        properties.storeToXML(new FileOutputStream("d:\\tt1.xml"), "testhwj");
        properties.storeToXML(new FileOutputStream("d:\\tt2.xml"), "testhwj", StandardCharsets.UTF_16.name());

    }
}
posted @ 2022-02-10 21:20  流星<。)#)))≦  阅读(38)  评论(0编辑  收藏  举报