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()); } }