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对象应用put和putAll方法。但不建议使用这两个方法,因为它们允许调用者插入其键或值不是String的项。相反,应该使用setProperty方法。如果在“不安全”的Properties对象(即包含非String的键或值)上调用store或save方法,则该调用将失败。类似地,如果在“不安全”的Properties对象(即包含非String的键)上调用propertyNames或list方法,则该调用将失败。 -
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>
继承关系

类属性
| 类属性 |
|---|
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());
}
}
浙公网安备 33010602011771号