新聞中心
Properties

成都創(chuàng)新互聯(lián)是創(chuàng)新、創(chuàng)意、研發(fā)型一體的綜合型網(wǎng)站建設(shè)公司,自成立以來公司不斷探索創(chuàng)新,始終堅持為客戶提供滿意周到的服務(wù),在本地打下了良好的口碑,在過去的十多年時間我們累計服務(wù)了上千家以及全國政企客戶,如成都雨棚定制等企業(yè)單位,完善的項目管理流程,嚴格把控項目進度與質(zhì)量監(jiān)控加上過硬的技術(shù)實力獲得客戶的一致贊譽。
java.lang.Object
|---java.util.Dictionary
|---|---java.util.Hashtable
public class Properties
extends HashtableProperties 類表示一組持久的屬性。 屬性可以保存到流中或從流中加載。 屬性列表中的每個鍵及其對應(yīng)的值都是一個字符串。
一個屬性列表可以包含另一個屬性列表作為其“默認值”; 如果在原始屬性列表中找不到屬性鍵,則搜索第二個屬性列表。
因為 Properties 繼承自 Hashtable,所以 put 和 putAll 方法可以應(yīng)用于 Properties 對象。 強烈建議不要使用它們,因為它們允許調(diào)用者插入鍵或值不是字符串的條目。 應(yīng)該改用 setProperty 方法。 如果在包含非字符串鍵或值的“受損”屬性對象上調(diào)用存儲或保存方法,則調(diào)用將失敗。 類似地,如果在包含非字符串鍵的“受損”屬性對象上調(diào)用 propertyNames 或 list 方法,則調(diào)用將失敗。
load(Reader) / store(Writer, String) 方法以下面指定的簡單的面向行的格式從基于字符的流中加載和存儲屬性。 load(InputStream) / store(OutputStream, String) 方法與 load(Reader)/store(Writer, String) 對的工作方式相同,除了輸入/輸出流以 ISO 8859-1 字符編碼進行編碼。 不能用這種編碼直接表示的字符可以使用《Java? 語言規(guī)范》第 3.3 節(jié)中定義的 Unicode 轉(zhuǎn)義來編寫; 轉(zhuǎn)義序列中只允許使用單個 'u' 字符。 native2ascii 工具可用于將屬性文件與其他字符編碼進行轉(zhuǎn)換。
loadFromXML(java.io.InputStream) 和 storeToXML(java.io.OutputStream,java.lang.String,java.lang.String) 方法以簡單的 XML 格式加載和存儲屬性。 默認情況下使用 UTF-8 字符編碼,但是如果需要,可以指定特定的編碼。 實現(xiàn)需要支持 UTF-8 和 UTF-16,并且可能支持其他編碼。 XML 屬性文檔具有以下 DOCTYPE 聲明:
請注意,導(dǎo)出或?qū)雽傩詴r不會訪問系統(tǒng) URI (http://java.sun.com/dtd/properties.dtd); 它僅用作唯一標識 DTD 的字符串,即:
此類是線程安全的:多個線程可以共享一個 Properties 對象,而無需外部同步。
嵌套類摘要
| 從接口 java.util.Map 繼承的嵌套類/接口 |
|---|
| Map.EntryK,V |
字段摘要
| 修飾符和類型 | 字段 | 描述 |
|---|---|---|
| protected Properties | defaults | 一個屬性列表,其中包含此屬性列表中未找到的任何鍵的默認值。 |
構(gòu)造函數(shù)摘要
| 構(gòu)造函數(shù) | 描述 |
|---|---|
| Properties() | 創(chuàng)建一個沒有默認值的空屬性列表。 |
| Properties(Properties defaults) | 創(chuàng)建具有指定默認值的空屬性列表。 |
方法總結(jié)
| 修飾符和類型 | 方法 | 描述 |
|---|---|---|
| String | getProperty(String key) | 在此屬性列表中搜索具有指定鍵的屬性。 |
| String | getProperty(String key, String defaultValue) | 在此屬性列表中搜索具有指定鍵的屬性。 |
| void | list(PrintStream out) | 將此屬性列表打印到指定的輸出流。 |
| void | list(PrintWriter out) | 將此屬性列表打印到指定的輸出流。 |
| void | load(InputStream inStream) | 從輸入字節(jié)流中讀取屬性列表(鍵和元素對)。 |
| void | load(Reader reader) | 以簡單的面向行的格式從輸入字符流中讀取屬性列表(鍵和元素對)。 |
| void | loadFromXML(InputStream in) | 將指定輸入流上的 XML 文檔表示的所有屬性加載到此屬性表中。 |
| Enumeration> | propertyNames() | 如果尚未從主屬性列表中找到同名的鍵,則返回此屬性列表中所有鍵的枚舉,包括默認屬性列表中的不同鍵。 |
| void | save(OutputStream out, String comments) | 已棄用。 如果在保存屬性列表時發(fā)生 I/O 錯誤,此方法不會引發(fā) IOException。 保存屬性列表的首選方法是通過 store(OutputStream out, String comments) 方法或 storeToXML(OutputStream os, String comment) 方法。 |
| Object | setProperty(String key, String value) | 調(diào)用 Hashtable 方法 put。 |
| void | store(OutputStream out, String comments) | 將此屬性表中的此屬性列表(鍵和元素對)以適合使用 load(InputStream) 方法加載到屬性表的格式寫入輸出流。 |
| void | store(Writer writer, String comments) | 將此屬性表中的屬性列表(鍵和元素對)以適合使用 load(Reader) 方法的格式寫入輸出字符流。 |
| void | storeToXML(OutputStream os, String comment) | 發(fā)出表示此表中包含的所有屬性的 XML 文檔。 |
| void | storeToXML(OutputStream os, String comment, String encoding) | 使用指定的編碼發(fā)出表示此表中包含的所有屬性的 XML 文檔。 |
| SetString | stringPropertyNames() | 返回此屬性列表中的一組鍵,其中鍵及其對應(yīng)的值是字符串,如果尚未從主屬性列表中找到同名的鍵,則包括默認屬性列表中的不同鍵。 |
| 從類 java.util.Hashtable 繼承的方法 |
|---|
| 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 |
| 從類 java.lang.Object 繼承的方法 |
|---|
| finalize, getClass, notify, notifyAll, wait, wait, wait |
字段詳細信息
defaults
protected Properties defaults
一個屬性列表,其中包含此屬性列表中未找到的任何鍵的默認值。
構(gòu)造函數(shù)詳細信息
Properties
public Properties()
創(chuàng)建一個沒有默認值的空屬性列表。
Properties
public Properties(Properties defaults)
創(chuàng)建具有指定默認值的空屬性列表。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| defaults | 默認值。 |
方法詳情
setProperty
public Object setProperty(String key, String value)
調(diào)用 Hashtable 方法 put。 提供與 getProperty 方法的并行性。 強制對屬性鍵和值使用字符串。 返回的值是對 put 的 Hashtable 調(diào)用的結(jié)果。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| key | 要放入此屬性列表的鍵。 |
| value | 鍵對應(yīng)的值。 |
返回:
此屬性列表中指定鍵的前一個值,如果沒有,則返回 null。
load
public void load(Reader reader) throws IOException
以簡單的面向行的格式從輸入字符流中讀取屬性列表(鍵和元素對)。
屬性按行處理。線有兩種,自然線和邏輯線。自然行定義為由一組行終止符(\n 或 \r 或 \r\n)或流的末尾終止的字符行。自然行可以是空行、注釋行,或者包含全部或部分關(guān)鍵元素對。邏輯行包含鍵元素對的所有數(shù)據(jù),通過使用反斜杠字符轉(zhuǎn)義行終止符序列,這些數(shù)據(jù)可以分布在多個相鄰的自然行中。請注意,不能以這種方式擴展注釋行;作為注釋的每個自然行都必須有自己的注釋指示符,如下所述。從輸入中讀取行,直到到達流的末尾。
僅包含空白字符的自然行被視為空白并被忽略。注釋行有一個 ASCII '#' 或 '!'作為它的第一個非空白字符;注釋行也被忽略并且不編碼關(guān)鍵元素信息。除了行終止符之外,此格式還考慮字符空格(''、'\u0020')、制表符('\t'、'\u0009')和換頁符('\f'、'\u000C')是空白。
如果邏輯行分布在多個自然行中,則轉(zhuǎn)義行終止符序列的反斜杠、行終止符序列以及下一行開頭的任何空白對鍵或元素值沒有影響。鍵和元素解析(加載時)的其余討論將假定構(gòu)成鍵和元素的所有字符在刪除行繼續(xù)字符后出現(xiàn)在單個自然行上。請注意,僅檢查行終止符序列之前的字符來確定行終止符是否被轉(zhuǎn)義是不夠的;要轉(zhuǎn)義行終止符,必須有奇數(shù)個連續(xù)的反斜杠。由于輸入是從左到右處理的,因此在行終止符(或其他地方)之前的非零偶數(shù)個 2n 個連續(xù)反斜杠在轉(zhuǎn)義處理之后對 n 個反斜杠進行編碼。
鍵包含行中從第一個非空白字符開始到但不包括第一個未轉(zhuǎn)義的“=”、“:”或除行終止符以外的空白字符的所有字符。所有這些鍵終止字符都可以包含在鍵中,方法是用前面的反斜杠字符轉(zhuǎn)義它們;例如,
\:\=
將是兩個字符的鍵“:=”??梢允褂?\r 和 \n 轉(zhuǎn)義序列包含行終止符。跳過鍵后的任何空格;如果鍵后面的第一個非空白字符是“=”或“:”,則忽略它,并且也跳過它后面的任何空白字符。該行上所有剩余的字符都成為相關(guān)元素字符串的一部分;如果沒有剩余字符,則元素為空字符串“”。一旦識別出構(gòu)成鍵和元素的原始字符序列,就如上所述執(zhí)行轉(zhuǎn)義處理。
例如,以下三行中的每一行都指定了鍵“Truth”和關(guān)聯(lián)的元素值“Beauty”:
Truth = Beauty
Truth:Beauty
Truth :Beauty作為另一個示例,以下三行指定了一個屬性:
fruits apple, banana, pear, \
* cantaloupe, watermelon, \
* kiwi, mango關(guān)鍵是“fruits”,相關(guān)元素是:
"apple, banana, pear, cantaloupe, watermelon, kiwi, mango"請注意,每個 \ 之前都會出現(xiàn)一個空格,因此最終結(jié)果中的每個逗號之后都會出現(xiàn)一個空格; 續(xù)行上的 \、行終止符和前導(dǎo)空格僅被丟棄,不會被一個或多個其他字符替換。
作為第三個示例,該行:
cheeses指定鍵是“cheeses”,關(guān)聯(lián)元素是空字符串“”。
鍵和元素中的字符可以用轉(zhuǎn)義序列表示,類似于用于字符和字符串文字的轉(zhuǎn)義序列(參見《Java? 語言規(guī)范》的第 3.3 和 3.10.6 節(jié))。 與用于字符和字符串的字符轉(zhuǎn)義序列和 Unicode 轉(zhuǎn)義的區(qū)別是:
- 八進制轉(zhuǎn)義不被識別。
- 字符序列 \b 不代表退格字符。
- 該方法不會將無效轉(zhuǎn)義字符之前的反斜杠字符 \ 視為錯誤; 反斜杠被靜默刪除。 例如,在 Java 字符串中,序列“\z”會導(dǎo)致編譯時錯誤。 相比之下,這種方法會默默地刪除反斜杠。 因此,此方法將兩個字符序列“\b”視為等效于單個字符“b”。
- 單引號和雙引號不需要轉(zhuǎn)義; 但是,根據(jù)上面的規(guī)則,反斜杠前面的單引號和雙引號字符仍然會分別產(chǎn)生單引號和雙引號字符。
- Unicode 轉(zhuǎn)義序列中只允許使用單個 'u' 字符。
此方法返回后,指定的流保持打開狀態(tài)。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| reader | 輸入字符流。 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| IOException | 如果從輸入流讀取時發(fā)生錯誤。 |
| IllegalArgumentException | 如果輸入中出現(xiàn)格式錯誤的 Unicode 轉(zhuǎn)義。 |
load
public void load(InputStream inStream) throws IOException
從輸入字節(jié)流中讀取屬性列表(鍵和元素對)。 輸入流采用 load(Reader) 中指定的簡單的面向行的格式,并假定使用 ISO 8859-1 字符編碼; 也就是說,每個字節(jié)都是一個 Latin1 字符。 非 Latin1 中的字符和某些特殊字符,使用《Java? 語言規(guī)范》第 3.3 節(jié)中定義的 Unicode 轉(zhuǎn)義在鍵和元素中表示。
此方法返回后,指定的流保持打開狀態(tài)。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| inStream | 輸入流。 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| IOException | 如果從輸入流讀取時發(fā)生錯誤。 |
| IllegalArgumentException | 如果輸入流包含格式錯誤的 Unicode 轉(zhuǎn)義序列。 |
save
@Deprecated public void save(OutputStream out, String comments)
已棄用。 如果在保存屬性列表時發(fā)生 I/O 錯誤,此方法不會引發(fā) IOException。 保存屬性列表的首選方法是通過 store(OutputStream out, String comments) 方法或 storeToXML(OutputStream os, String comment) 方法。
調(diào)用 store(OutputStream out, String comments) 方法并抑制拋出的 IOExceptions。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| out | 一個輸出流。 |
| comments | 屬性列表的描述。 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| ClassCastException | 如果此 Properties 對象包含任何不是字符串的鍵或值。 |
store
public void store(Writer writer, String comments) throws IOException
將此屬性表中的屬性列表(鍵和元素對)以適合使用 load(Reader) 方法的格式寫入輸出字符流。
此屬性表的默認表中的屬性(如果有)不會通過此方法寫出。
如果注釋參數(shù)不為空,則首先將 ASCII # 字符、注釋字符串和行分隔符寫入輸出流。因此,評論可以用作識別評論。換行符 ('\n')、回車符 ('\r') 或在注釋中緊跟換行符的回車符中的任何一個都將替換為由 Writer 生成的行分隔符,并且如果下一個字符評論中不是字符#或字符!然后在該行分隔符之后寫出一個 ASCII #。
接下來,總是寫入一個注釋行,由一個 ASCII # 字符、當前日期和時間(就好像由 Date 的 toString 方法生成的當前時間一樣)和一個由 Writer 生成的行分隔符組成。
然后寫出此屬性表中的每個條目,每行一個。對于每個條目,寫入鍵字符串,然后是 ASCII =,然后是關(guān)聯(lián)的元素字符串。對于鍵,所有空格字符都寫有前面的 \ 字符。對于元素,前導(dǎo)空格字符,而不是嵌入或尾隨空格字符,用前面的 \ 字符寫入。鍵和元素字符 #、!、= 和 : 前面帶有反斜杠,以確保它們被正確加載。
寫入條目后,將刷新輸出流。此方法返回后,輸出流保持打開狀態(tài)。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| writer | 輸出字符流編寫器。 |
| comments | 屬性列表的描述。 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| IOException | 如果將此屬性列表寫入指定的輸出流會引發(fā) IOException。 |
| ClassCastException | 如果此 Properties 對象包含任何不是字符串的鍵或值。 |
| NullPointerException | 如果 writer 為空。 |
store
public void store(OutputStream out, String comments) throws IOException
將此屬性表中的此屬性列表(鍵和元素對)以適合使用 load(InputStream) 方法加載到屬性表的格式寫入輸出流。
此屬性表的默認表中的屬性(如果有)不會通過此方法寫出。
該方法輸出注釋、屬性鍵和值的格式與 store(Writer) 中指定的格式相同,但有以下區(qū)別:
- 流是使用 ISO 8859-1 字符編碼編寫的。
- 注釋中非 Latin-1 的字符被寫為 \uxxxx,因為它們的相應(yīng) unicode 十六進制值 xxxx。
- 屬性鍵或值中小于 \u0020 的字符和大于 \u007E 的字符寫為 \uxxxx 以對應(yīng)相應(yīng)的十六進制值 xxxx。
寫入條目后,將刷新輸出流。 此方法返回后,輸出流保持打開狀態(tài)。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| out | 一個輸出流。 |
| comments | 屬性列表的描述。 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| IOException | 如果將此屬性列表寫入指定的輸出流會引發(fā) IOException。 |
| ClassCastException | 如果此 Properties 對象包含任何不是字符串的鍵或值。 |
| NullPointerException | 如果 out 為空。 |
loadFromXML
public void loadFromXML(InputStream in) throws IOException, InvalidPropertiesFormatException
將指定輸入流上的 XML 文檔表示的所有屬性加載到此屬性表中。
XML 文檔必須具有以下 DOCTYPE 聲明:
此外,文檔必須滿足上述屬性 DTD。
讀取使用“UTF-8”或“UTF-16”編碼的 XML 文檔需要一個實現(xiàn)。 一個實現(xiàn)可能支持額外的編碼。
此方法返回后關(guān)閉指定的流。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| in | 從中讀取 XML 文檔的輸入流。 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| IOException | 如果從指定的輸入流中讀取會導(dǎo)致 IOException。 |
| UnsupportedEncodingException | 如果可以讀取文檔的編碼聲明并且它指定了不受支持的編碼 |
| InvalidPropertiesFormatException | 輸入流上的數(shù)據(jù)不構(gòu)成具有強制文檔類型的有效 XML 文檔。 |
| NullPointerException | 如果 in 為空。 |
storeToXML
public void storeToXML(OutputStream os, String comment) throws IOException
發(fā)出表示此表中包含的所有屬性的 XML 文檔。
調(diào)用 props.storeToXML(os, comment) 形式的此方法的行為方式與調(diào)用 props.storeToXML(os, comment, "UTF-8"); 完全相同。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| os | 發(fā)出 XML 文檔的輸出流。 |
| comment | 屬性列表的描述,如果不需要注釋,則返回 null。 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| IOException | 如果寫入指定的輸出流會導(dǎo)致 IOException。 |
| NullPointerException | 如果 os 為空。 |
| ClassCastException | 如果此 Properties 對象包含任何不是字符串的鍵或值。 |
storeToXML
public void storeToXML(OutputStream os, String comment, String encoding) throws IOException
使用指定的編碼發(fā)出表示此表中包含的所有屬性的 XML 文檔。
XML 文檔將具有以下 DOCTYPE 聲明:
如果指定的評論為空,則文檔中不會存儲任何評論。
需要一個實現(xiàn)來支持編寫使用“UTF-8”或“UTF-16”編碼的 XML 文檔。 一個實現(xiàn)可能支持額外的編碼。
此方法返回后,指定的流保持打開狀態(tài)。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| os | 發(fā)出 XML 文檔的輸出流。 |
| comment | 屬性列表的描述,如果不需要注釋,則返回 null。 |
| encoding | 支持的字符編碼的名稱 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| IOException | 如果寫入指定的輸出流會導(dǎo)致 IOException。 |
| UnsupportedEncodingException | 如果實現(xiàn)不支持編碼。 |
| NullPointerException | 如果 os 為 null,或者 encoding 為 null。 |
| ClassCastException | 如果此 Properties 對象包含任何不是字符串的鍵或值。 |
getProperty
public String getProperty(String key)
在此屬性列表中搜索具有指定鍵的屬性。 如果在該屬性列表中未找到該鍵,則遞歸地檢查默認屬性列表及其默認值。 如果未找到該屬性,則該方法返回 null。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| key | 屬性鍵。 |
返回:
此屬性列表中具有指定鍵值的值。
getProperty
public String getProperty(String key, String defaultValue)
在此屬性列表中搜索具有指定鍵的屬性。 如果在該屬性列表中未找到該鍵,則遞歸地檢查默認屬性列表及其默認值。 如果未找到該屬性,該方法將返回默認值參數(shù)。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| key | 哈希表鍵。 |
| defaultValue | 默認值。 |
返回:
此屬性列表中具有指定鍵值的值。
propertyNames
public Enumeration> propertyNames()
如果尚未從主屬性列表中找到同名的鍵,則返回此屬性列表中所有鍵的枚舉,包括默認屬性列表中的不同鍵。
返回:
此屬性列表中所有鍵的枚舉,包括默認屬性列表中的鍵。
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| ClassCastException | 如果此屬性列表中的任何鍵不是字符串。 |
stringPropertyNames
public SetString stringPropertyNames()
返回此屬性列表中的一組鍵,其中鍵及其對應(yīng)的值是字符串,如果尚未從主屬性列表中找到同名的鍵,則包括默認屬性列表中的不同鍵。 省略其鍵或值不是 String 類型的屬性。
返回的集合不受 Properties 對象的支持。 對此屬性的更改不會反映在集合中,反之亦然。
返回:
此屬性列表中的一組鍵,其中鍵及其對應(yīng)的值是字符串,包括默認屬性列表中的鍵。
list
public void list(PrintStream out)
將此屬性列表打印到指定的輸出流。 此方法對調(diào)試很有用。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| out | 一個輸出流。 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| ClassCastException | 如果此屬性列表中的任何鍵不是字符串。 |
list
public void list(PrintWriter out)
將此屬性列表打印到指定的輸出流。 此方法對調(diào)試很有用。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| out | 一個輸出流。 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| ClassCastException | 如果此屬性列表中的任何鍵不是字符串。 |
網(wǎng)站標題:創(chuàng)新互聯(lián)鴻蒙OS教程:鴻蒙OS Properties
文章分享:http://www.fisionsoft.com.cn/article/djijpoh.html


咨詢
建站咨詢
