public class Properties extends Hashtable<Object,Object>
Properties
类代表一个持久的特性。的
Properties
可以保存到流或流中加载。属性列表中的每个键和它的相应值是一个字符串。
属性列表可以包含另一个属性列表作为它的“默认”;如果在原始属性列表中没有找到属性键,则搜索该第二个属性列表。
因为Properties
继承的Hashtable
,put
和putAll
方法可以应用于Properties
对象。他们使用的是强烈反对,因为它们允许调用者插入项的键或值不Strings
。的setProperty
方法应该用来代替。如果store
或save
方法称为一个“妥协”的对象包含一个non-String
键或值Properties
,调用将失败。同样的,打电话给propertyNames
或list
方法将被称为是“妥协”Properties
对象包含一个non-String
关键失败。
的load(Reader)
/ store(Writer, String)
方法加载和存储性能和一个简单的面向行的格式下面指定基于流特征。的load(InputStream)
/ store(OutputStream, String)
方法相同的方式工作负载(读者)/存储(作家,字符串)对,除了输入/输出流的编码是ISO 8859-1字符编码。人物无法在这种编码直接表示可以使用Unicode转义在The Java™ Language Specification 3.3节定义;只有一个“U”字符是转义序列允许。的native2ascii工具可用于将属性文件和其他字符编码。
的loadFromXML(InputStream)
和storeToXML(OutputStream, String, String)
方法加载和存储在一个简单的XML格式的特性。默认的UTF-8字符编码的使用,但是一个具体的编码可以指定如果需要。实现都必须支持UTF-8和UTF-16和可能支持其他编码。一个XML属性文件具有如下DOCTYPE声明:
<!DOCTYPE属性系统”HTTP:/ / java。太阳。COM /文档/性能。DTD”>注意系统URI(http://java.sun.com/dtd/properties.dtd)是不访问进口或出口时的性能;它仅仅作为一个字符串来唯一标识的DTD,它是:
<?xml version=“1”encoding=“utf-8”?><!——DTD属性--><!元素属性(注释?,进入*)><!ATTLIST性能版CDATA #固定“1”><!元注释(# PCDATA)><!元素(# PCDATA)><!输入所需的# ATTLIST CDATA >
这个类是线程安全的:多个线程可以共享一个单一的Properties对象而不需要外部同步。
Modifier and Type | Field and Description |
---|---|
protected Properties |
defaults
一个属性列表,该属性列表中没有在这个属性列表中没有找到的任何键的默认值。
|
Constructor and Description |
---|
Properties()
创建一个没有默认值的空属性列表。
|
Properties(Properties defaults)
用指定的默认值创建一个空属性列表。
|
Modifier and Type | Method and Description |
---|---|
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)
调用方法
put
Hashtable。
|
void |
store(OutputStream out, String comments)
|
void |
store(Writer writer, String comments)
写这个属性列表(关键元素对)在这
Properties 表格式来合适的输出字符流使用
load(Reader) 方法。
|
void |
storeToXML(OutputStream os, String comment)
发出一个表示此表中包含的所有属性的XML文档。
|
void |
storeToXML(OutputStream os, String comment, String encoding)
发出一个表示此表中包含的所有属性的XML文档,使用指定的编码。
|
Set<String> |
stringPropertyNames()
在这个属性列表中返回一组键,其中键和它的对应值是字符串,包括在默认属性列表中的不同键,如果同一个名称的一个键没有从主要属性列表中找到。
|
clear, clone, compute, computeIfAbsent, computeIfPresent, contains, containsKey, containsValue, elements, entrySet, equals, forEach, get, getOrDefault, hashCode, isEmpty, keys, keySet, merge, put, putAll, putIfAbsent, rehash, remove, remove, replace, replace, replaceAll, size, toString, values
protected Properties defaults
public Properties()
public Properties(Properties defaults)
defaults
-默认。
public Object setProperty(String key, String value)
put
Hashtable。对于
getProperty方法并行。强制属性键和值的字符串的使用。返回值的结果的
Hashtable电话
put
。
key
-被放置到该属性列表的关键。
value
-对应的值
key。
null
。
getProperty(java.lang.String)
public void load(Reader reader) throws IOException
属性在行中处理。有两种线,自然的线条和逻辑线路。一个自然的线定义为一行字符,终止由一组线终止字符(\n
或\r
或\r\n
)或流的结束。一个自然的行可能是一个空白行,一个注释行,或保持所有或一些关键元素对。一个逻辑行持有的一个关键元素对的所有数据,这可能是分散在几个相邻的自然系的逃逸线终止序列与一个反斜杠字符\
。请注意,注释行不能以这种方式扩展;任何一个注释的自然行都必须有它自己的注释指示器,如下面所述。从输入到输入的行被读取,直到到达流的结束。
只包含空白字符的自然行被认为是空白的,并且被忽略了。评论线有一个ASCII '#'
或'!'
作为它的第一个非空白字符;评论线也被忽视和不编码的关键信息。除了线端子,这种格式将特征空间(' '
,'\u0020'
)、标签('\t'
,'\u0009'
),形成饲料('\f'
,'\u000C'
)是白色的空间。
如果一个逻辑行跨几个线条自然,反斜杠逃逸线终止序列,换行符序列,并在下一行开始的任何空白不影响关键或元素的值。讨论的其余部分的键和元素分析(当加载)将承担所有的字符构成的关键和元素出现在一个单一的自然行后,行连续字符已被删除。请注意,这是不足以只检查前面的行结束符序列来决定是否行结束符是逃跑的特征;必须有连续的反斜杠的行结束符是逃跑的奇数。由于输入是从左到右的处理,一个非零的偶数2n连续的反斜杠前的行结束符(或其他地方)n的反斜杠后逃逸处理编码。
主要包含所有的字符的线从第一个非空白字符和最多,但不包括第一非转义'='
,':'
,或空白字符以外的行结束符。所有这些关键终止字符可以通过逃避与前一个反斜杠字符的关键包括;例如,
\:\=
将两个字符键":="
。行结束符的字符可以包括使用\r
和\n
转义序列。空格键后,跳过;如果第一个非空格字符后的关键是'='
或':'
,然后忽略任何空白字符后也跳过。所有剩余的字符就行成为相关元素的字符串的一部分;如果没有剩余的字符,元素是空字符串""
。一旦原字符序列构成的关键元素是确定的,逃避处理执行上文所述。
作为一个例子,下面的三行指定的关键"Truth"
和相关的元素值"Beauty"
:
真理=美真相:美真相:美作为另一个例子,下面的三行指定一个属性:
水果苹果,香蕉,梨,哈密瓜、西瓜、\奇异果、芒果关键是
"fruits"
和相关的元素是:
“苹果、香蕉、梨、香瓜、西瓜、猕猴桃、芒果”注意空间出现在每个
\
这样空间会在最终的结果每个逗号后的出现;
\
,行结束符,一与领先的白色空间的延续行只是丢弃,不由一个或多个其他字符替换。
作为三分之一个例子,该行:
奶酪指定的关键是
"cheeses"
和伴生元素为空字符串
""
。
在键和元素特征可以表示转义序列类似于那些用于字符和字符串类型(见3.3节和3.10.6的The Java™ Language Specification)。从Unicode转义字符转义序列和用于字符和字符串的区别:
\b
确实不表示退格字符。\
,在非有效的转义字符是一种错误;反斜杠被丢弃。例如,在一个java字符串序列"\z"
将导致编译时错误。相反,这种方法默默滴反斜杠。因此,该方法对两个字符序列"\b"
等同于单个字符'b'
。该方法返回后指定的流保持打开状态。
reader
-输入字符流。
IOException
如果当读取输入流时发生了一个错误。
IllegalArgumentException
-如果一个畸形的Unicode转义出现在输入。
public void load(InputStream inStream) throws IOException
load(Reader)
和假定使用ISO 8859-1字符编码;这是每个字节是一个latin1字符。字符在latin1,和某些特殊字符,表示在使用Unicode转义键和元素在
The Java™ Language Specification 3.3节定义。
该方法返回后指定的流保持打开状态。
inStream
-输入流。
IOException
如果当读取输入流时发生了一个错误。
IllegalArgumentException
-如果输入流包含一个畸形的Unicode转义序列。
@Deprecated public void save(OutputStream out, String comments)
store(OutputStream out, String comments)
法或storeToXML(OutputStream os, String comment)
方法。
store(OutputStream out, String comments)
ioexceptions被抛弃。
out
-输出流。
comments
-描述的属性列表。
ClassCastException
-如果这
Properties
对象包含任何键或不
Strings
值。
public void store(Writer writer, String comments) throws IOException
Properties
表格式来合适的输出字符流使用
load(Reader)
方法。
从这Properties
表的默认表属性(如果有的话)是用这种方法写出来的不。
如果评论参数不为null,然后一个ASCII字符的字符串#
,评论,和一个行分隔符被首次写入输出流。因此,该comments
可以作为一种识别的评论。一行的任何一个('\n'),回车(“R”),或一个回车紧接一行注释所取代的Writer
生成线分离器如果评论的下一个字符不是人物#
或字符ASCII #
是!
然后写出来,行分隔符后。
接下来,一个注释行总是写的,由一个ASCII #
而言,当前的日期和时间(如由Date
的toString
方法生产的当前时间),和一个行分隔符的Writer
生成。
然后在这个Properties
表每一项都写出来,每行一个。对于每一项的键字符串写入,然后一个ASCII =
,那么相关的元素的字符串。为重点,所有的空格字符是用前一\
字符。对于元素,领先的空间特征,但不是嵌入式或尾随空格字符,用前面的\
字符。人物#
,!
,=
的关键元素,并:
写与前一个反斜杠来确保他们正确加载。
写入条目后,输出流被刷新。该方法返回后,输出流保持打开状态。
writer
-输出字符流的作家。
comments
-描述的属性列表。
IOException
如果写这个属性列表中指定的输出流,抛出一个
IOException。
ClassCastException
-如果这
Properties
对象包含任何键或是没有价值
Strings
。
NullPointerException
-如果
writer
是空的。
public void store(OutputStream out, String comments) throws IOException
Properties
表格式来合适的输出流加载到一个
Properties
表使用
load(InputStream)
方法。
从这Properties
表的默认表属性(如果有的话)是用这种方法写出来的不。
该方法输出评论性质的键和值在相同的格式,按store(Writer)
,具有以下不同之处:
\u
xxxx。\u0020
大于属性键或值\u007E
写作为适当的十六进制值XXXX \u
xxxx。写入条目后,输出流被刷新。该方法返回后,输出流保持打开状态。
out
-输出流。
comments
-描述的属性列表。
IOException
如果写这个属性列表中指定的输出流,抛出一个
IOException。
ClassCastException
-如果这
Properties
对象包含任何键或不
Strings
值。
NullPointerException
-如果
out
是空的。
public void loadFromXML(InputStream in) throws IOException, InvalidPropertiesFormatException
XML文档必须有如下DOCTYPE声明:
<!DOCTYPE属性系统”HTTP:/ / java。太阳。COM /文档/性能。DTD”>此外,文件必须满足上述性能的DTD。
实现需要读取XML文件,使用“UTF-8
”或“UTF-16
”编码。一个实现可能支持额外的编码。
在该方法返回后关闭指定的流。
in
-从中读取XML文件的输入流。
IOException
如果从指定的输入流,结果在一个
IOException阅读。
UnsupportedEncodingException
-如果文档的编码声明可以读,它指定一个编码,不支持
InvalidPropertiesFormatException
对输入数据流不构成与授权文件类型有效的XML文档。
NullPointerException
-如果
in
是空的。
storeToXML(OutputStream, String, String)
,
Character Encoding in Entities
public void storeToXML(OutputStream os, String comment) throws IOException
这种形式的props.storeToXML(os, comment)方法调用的行为一样,调用props.storeToXML(os, comment, "UTF-8");。
os
-在输出流发出的XML文档。
comment
-描述的属性列表,或者如果需要
null
无可奉告。
IOException
如果写入到指定的输出流中
IOException。
NullPointerException
-如果
os
是空的。
ClassCastException
-如果这
Properties
对象包含任何键或不
Strings
值。
loadFromXML(InputStream)
public void storeToXML(OutputStream os, String comment, String encoding) throws IOException
XML文档将有如下DOCTYPE声明:
<!DOCTYPE属性系统”HTTP:/ / java。太阳。COM /文档/性能。DTD”>
如果指定的评论没有评论null
然后将存储在文档。
实现需要支持写XML文档中利用“UTF-8
”或“UTF-16
”编码。一个实现可能支持额外的编码。
该方法返回后指定的流保持打开状态。
os
-在输出流发出的XML文档。
comment
-描述的属性列表,或者如果需要
null
无可奉告。
encoding
-支持的
character encoding名称
IOException
如果写入到指定的输出流中
IOException。
UnsupportedEncodingException
如果编码不能实现所支持的。
NullPointerException
-如果
os
是
null
,或者如果
encoding
是
null
。
ClassCastException
-如果这
Properties
对象包含任何键或不
Strings
值。
loadFromXML(InputStream)
,
Character Encoding in Entities
public String getProperty(String key)
null
如果找不到属性。
key
性能的关键。
setProperty(java.lang.String, java.lang.String)
,
defaults
public String getProperty(String key, String defaultValue)
key
-哈希表中的键。
defaultValue
-默认值。
setProperty(java.lang.String, java.lang.String)
,
defaults
public Enumeration<?> propertyNames()
ClassCastException
属性列表的任何关键的不是一个字符串。
Enumeration
,
defaults
,
stringPropertyNames()
public Set<String> stringPropertyNames()
返回的集合是不是由Properties对象支持。这Properties更改不会反映在集,反之亦然。
defaults
public void list(PrintStream out)
out
-输出流。
ClassCastException
属性列表的任何关键的不是一个字符串。
public void list(PrintWriter out)
out
-输出流。
ClassCastException
属性列表的任何关键的不是一个字符串。
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.