W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
java.lang.Object
|---java.util.Formatter
public final class Formatter
extends Object
implements Closeable, Flushable
printf 樣式格式字符串的解釋器。 此類提供對布局對齊和對齊、數(shù)字、字符串和日期/時間數(shù)據(jù)的通用格式以及特定于語言環(huán)境的輸出的支持。 支持常見的 Java 類型,例如 byte、BigDecimal 和 Calendar。 通過 Formattable 接口為任意用戶類型提供有限的格式定制。
格式化程序對于多線程訪問不一定是安全的。 線程安全是可選的,并且是此類中方法的用戶的責任。
Java 語言的格式化打印很大程度上受到 C 的 printf 的啟發(fā)。 盡管格式字符串與 C 相似,但已進行了一些定制以適應 Java 語言并利用其某些特性。 此外,Java 格式比 C 更嚴格; 例如,如果轉換與標志不兼容,則會引發(fā)異常。 在 C 中,不適用的標志會被默默地忽略。 因此,格式字符串旨在為 C 程序員識別,但不一定與 C 中的格式字符串完全兼容。
預期用法示例:
StringBuilder sb = new StringBuilder();
// Send all output to the Appendable object sb
Formatter formatter = new Formatter(sb, Locale.US);
// Explicit argument indices may be used to re-order output.
formatter.format("%4$2s %3$2s %2$2s %1$2s", "a", "b", "c", "d")
// -> " d c b a"
// Optional locale as the first argument can be used to get
// locale-specific formatting of numbers. The precision and width can be
// given to round and align the value.
formatter.format(Locale.FRANCE, "e = %+10.4f", Math.E);
// -> "e = +2,7183"
// The '(' numeric flag may be used to format negative numbers with
// parentheses rather than a minus sign. Group separators are
// automatically inserted.
formatter.format("Amount gained or lost since last statement: $ %(,.2f",
balanceDelta);
// -> "Amount gained or lost since last statement: $ (6,217.58)"
如以下調用所示,存在用于常見格式化請求的便捷方法:
// Writes a formatted string to System.out.
System.out.format("Local time: %tT", Calendar.getInstance());
// -> "Local time: 13:34:18"
// Writes formatted output to System.err.
System.err.printf("Unable to open file '%1$s': %2$s",
fileName, exception.getMessage());
// -> "Unable to open file 'food': No such file or directory"
像 C 的 sprintf(3) 一樣,可以使用靜態(tài)方法 String#format(String,Object...) 格式化字符串:
// Format a string containing a date.
import java.util.Calendar;
import java.util.GregorianCalendar;
import static java.util.Calendar.*;
Calendar c = new GregorianCalendar(1995, MAY, 23);
String s = String.format("Duke's Birthday: %1$tb %1$te, %1$tY", c);
// -> s == "Duke's Birthday: May 23, 1995"
組織
本規(guī)范分為兩部分。 第一部分,摘要,涵蓋了基本的格式化概念。 本部分適用于希望快速入門并熟悉其他編程語言的格式化打印的用戶。 第二部分,詳細信息,涵蓋了具體的實現(xiàn)細節(jié)。 它適用于想要更精確地規(guī)范格式化行為的用戶。
概括
本節(jié)旨在提供格式化概念的簡要概述。
格式化字符串語法
每個產(chǎn)生格式化輸出的方法都需要一個格式字符串和一個參數(shù)列表。 格式字符串是一個可以包含固定文本和一個或多個嵌入格式說明符的字符串。 考慮以下示例:
Calendar c = ...;
String s = String.format("Duke's Birthday: %1$tm %1$te,%1$tY", c);
此格式字符串是格式方法的第一個參數(shù)。 它包含三個格式說明符“%1$tm”、“%1$te”和“%1$tY”,它們指示應如何處理參數(shù)以及應在文本中插入的位置。 格式字符串的其余部分是固定文本,包括“公爵生日:”和任何其他空格或標點符號。 參數(shù)列表包含在格式字符串之后傳遞給方法的所有參數(shù)。 在上面的示例中,參數(shù)列表的大小為 1,由日歷對象 c 組成。
%[argument_index$][flags][width][.precision]conversion
可選的 argument_index 是一個十進制整數(shù),指示參數(shù)在參數(shù)列表中的位置。 第一個參數(shù)由“1$”引用,第二個由“2$”引用,以此類推。
可選標志是一組修改輸出格式的字符。 有效標志集取決于轉換。
可選寬度是一個十進制正整數(shù),指示要寫入輸出的最小字符數(shù)。
可選精度是一個非負十進制整數(shù),通常用于限制字符數(shù)。 具體行為取決于轉換。
所需的轉換是一個字符,指示應如何格式化參數(shù)。 給定參數(shù)的有效轉換集取決于參數(shù)的數(shù)據(jù)類型。
%[argument_index$][flags][width]conversion
可選的參數(shù)索引、標志和寬度定義如上。
所需的轉換是兩個字符序列。 第一個字符是“t”或“T”。 第二個字符表示要使用的格式。 這些字符與 GNU date 和 POSIX strftime(3c) 定義的字符相似但不完全相同。
%[flags][width]conversion
可選標志和寬度定義如上。
所需的轉換是指示要在輸出中插入的內容的字符。
轉換
轉換分為以下幾類:
下表總結了支持的轉換。 由大寫字符表示的轉換(即“B”、“H”、“S”、“C”、“X”、“E”、“G”、“A”和“T”)是相同的 與對應的小寫轉換字符相同,只是根據(jù)當前 Locale 的規(guī)則將結果轉換為大寫。 結果等效于以下對 String#toUpperCase() 的調用
out.toUpperCase()
任何未明確定義為轉換的字符都是非法的,并為將來的擴展保留。
日期/時間轉換
為“t”和“T”轉換定義了以下日期和時間轉換后綴字符。 這些類型與 GNU date 和 POSIX strftime(3c) 定義的類型相似但不完全相同。 提供了其他轉換類型來訪問特定于 Java 的功能(例如,“L”表示秒內的毫秒)。
以下轉換字符用于格式化時間:
以下轉換字符用于格式化日期:
以下轉換字符用于格式化常見的日期/時間組合。
任何未明確定義為日期/時間轉換后綴的字符都是非法的,并為將來的擴展保留。
標志
下表總結了支持的標志。 y 表示指示的參數(shù)類型支持該標志。
任何未明確定義為標志的字符都是非法的,并為將來的擴展保留。
寬度
寬度是要寫入輸出的最小字符數(shù)。 對于行分隔符轉換,寬度不適用; 如果提供,將拋出異常。
精確
對于一般參數(shù)類型,精度是要寫入輸出的最大字符數(shù)。
對于浮點轉換“a”、“A”、“e”、“E”和“f”,精度是小數(shù)點后的位數(shù)。 如果轉換為“g”或“G”,則精度是舍入后結果幅度中的總位數(shù)。
對于字符、整數(shù)和日期/時間參數(shù)類型以及百分比和行分隔符轉換,精度不適用; 如果提供了精度,則會拋出異常。
參數(shù)索引
參數(shù)索引是一個十進制整數(shù),指示參數(shù)在參數(shù)列表中的位置。 第一個參數(shù)由“1$”引用,第二個由“2$”引用,以此類推。
按位置引用參數(shù)的另一種方法是使用 '<' ('\u003c') 標志,這會導致重新使用前一個格式說明符的參數(shù)。 例如,以下兩個語句將產(chǎn)生相同的字符串:
Calendar c = ...;
String s1 = String.format("Duke's Birthday: %1$tm %1$te,%1$tY", c);
String s2 = String.format("Duke's Birthday: %1$tm %<te,%<tY", c);
細節(jié)
本節(jié)旨在提供格式化的行為細節(jié),包括條件和異常、支持的數(shù)據(jù)類型、本地化以及標志、轉換和數(shù)據(jù)類型之間的交互。
任何未明確定義為轉換、日期/時間轉換后綴或標志的字符都是非法的,并為將來的擴展保留。在格式字符串中使用此類字符將導致拋出 UnknownFormatConversionException 或 UnknownFormatFlagsException。
如果格式說明符包含具有無效值或不受支持的寬度或精度,則將分別拋出 IllegalFormatWidthException 或 IllegalFormatPrecisionException。
如果格式說明符包含不適用于相應參數(shù)的轉換字符,則會拋出 IllegalFormatConversionException。
Formatter 的任何格式方法以及任何格式便利方法(例如 String#format(String,Object...) 和 PrintStream.printf)都可能引發(fā)所有指定的異常。
由大寫字符表示的轉換(即“B”、“H”、“S”、“C”、“X”、“E”、“G”、“A”和“T”)是相同的與對應的小寫轉換字符相同,只是根據(jù)當前 Locale 的規(guī)則將結果轉換為大寫。結果等效于以下對 String#toUpperCase() 的調用
out.toUpperCase()
一般的
以下一般轉換可應用于任何參數(shù)類型:
以下標志適用于一般轉換:
寬度是要寫入輸出的最小字符數(shù)。如果轉換后的值的長度小于寬度,則輸出將被 ' ' ('\u0020') 填充,直到字符總數(shù)等于寬度。默認情況下,填充位于左側。如果給出“-”標志,則填充將在右側。如果未指定寬度,則沒有最小值。
精度是要寫入輸出的最大字符數(shù)。精度在寬度之前應用,因此即使寬度大于精度,輸出也會被截斷為精度字符。如果未指定精度,則對字符數(shù)沒有明確限制。
字符 這種轉換可以應用于 char 和 Character。當 Character#isValidCodePoint 返回 true 時,它也可以應用于 byte、Byte、short 和 Short、int 和 Integer 類型。如果它返回 false,則會拋出 IllegalFormatCodePointException。
為常規(guī)轉換定義的“-”標志適用。如果給出了 '#' 標志,則將拋出 FormatFlagsConversionMismatchException。
寬度定義為通用轉換。
精度不適用。如果指定了精度,則會拋出 IllegalFormatPrecisionException。
數(shù)字
數(shù)值轉換分為以下幾類:
數(shù)字類型將根據(jù)以下算法進行格式化:
號碼定位算法
在為整數(shù)部分、小數(shù)部分和指數(shù)(根據(jù)數(shù)據(jù)類型而定)獲得數(shù)字后,將應用以下轉換:
如果值為 NaN 或正無窮大,則將分別輸出文字字符串“NaN”或“Infinity”。 如果該值為負無窮大,則如果給出了“(”標志,則輸出將為“(無窮大)”,否則輸出將為“-Infinity”。這些值未本地化。
Byte, Short, Integer, and Long
以下轉換可應用于 byte、Byte、short、Short、int 和 Integer、long 和 Long。
如果轉換為 'o'、'x' 或 'X' 并且同時給出了 '#' 和 '0' 標志,則結果將包含基數(shù)指示符('0' 表示八進制和“0x”或“ 0X" 表示十六進制)、一些零(基于寬度)和值。
如果未給出“-”標志,則空格填充將出現(xiàn)在符號之前。
以下標志適用于數(shù)值整數(shù)轉換:
如果沒有給出標志,則默認格式如下:
寬度是要寫入輸出的最小字符數(shù)。 這包括任何符號、數(shù)字、分組分隔符、基數(shù)指示符和括號。 如果轉換后的值的長度小于寬度,則輸出將用空格 ('\u0020') 填充,直到字符總數(shù)等于寬度。 默認情況下,填充位于左側。 如果給出“-”標志,則填充將在右側。 如果未指定寬度,則沒有最小值。
精度不適用。 如果指定了精度,則將拋出 IllegalFormatPrecisionException。
BigInteger
以下轉換可應用于 BigInteger。
如果轉換為 'o'、'x' 或 'X' 并且同時給出了 '#' 和 '0' 標志,則結果將包含基本指示符('0' 表示八進制和“0x”或“ 0X" 表示十六進制)、一些零(基于寬度)和值。
如果給出'0'標志并且值為負,則零填充將出現(xiàn)在符號之后。
如果未給出“-”標志,則空格填充將出現(xiàn)在符號之前。
為 Byte、Short、Integer 和 Long 定義的所有標志都適用。 未給出標志時的默認行為與 Byte、Short、Integer 和 Long 相同。
寬度的規(guī)格與 Byte、Short、Integer 和 Long 的定義相同。
精度不適用。 如果指定了精度,則將拋出 IllegalFormatPrecisionException。
Float and Double
以下轉換可應用于 float、Float、double 和 Double。
為 Byte、Short、Integer 和 Long 定義的所有標志都適用。
如果給出了“#”標志,那么小數(shù)分隔符將始終存在。
如果沒有給出標志,則默認格式如下:
寬度是要寫入輸出的最小字符數(shù)。這包括任何符號、數(shù)字、分組分隔符、小數(shù)分隔符、指數(shù)符號、基數(shù)指示符、括號以及表示無窮大和 NaN 的字符串(如果適用)。如果轉換后的值的長度小于寬度,則輸出將用空格 ('\u0020') 填充,直到字符總數(shù)等于寬度。默認情況下,填充位于左側。如果給出“-”標志,則填充將在右側。如果未指定寬度,則沒有最小值。
如果轉換為“e”、“E”或“f”,則精度為小數(shù)分隔符后的位數(shù)。如果未指定精度,則假定為 6。
如果轉換為“g”或“G”,則精度是舍入后所得幅度中有效數(shù)字的總數(shù)。如果未指定精度,則默認值為 6。如果精度為 0,則取為 1。
如果轉換為“a”或“A”,則精度為小數(shù)點后的十六進制位數(shù)。如果未提供精度,則將輸出 Double#toHexString(double) 返回的所有數(shù)字。
BigDecimal
以下轉換可能適用于 BigDecimal。
為 Byte、Short、Integer 和 Long 定義的所有標志都適用。
如果給出了“#”標志,那么小數(shù)分隔符將始終存在。
沒有給出標志時的默認行為與 Float 和 Double 相同。
寬度和精度的規(guī)格與 Float 和 Double 的定義相同。
Date/Time
此轉換可應用于 long、Long、Calendar、Date 和 TemporalAccessor
為“t”和“T”轉換定義了以下日期和時間轉換字符后綴。這些類型與 GNU date 和 POSIX strftime(3c) 定義的類型相似但不完全相同。提供了其他轉換類型來訪問特定于 Java 的功能(例如,“L”表示秒內的毫秒)。
以下轉換字符用于格式化時間:
以下轉換字符用于格式化日期:
以下轉換字符用于格式化常見的日期/時間組合。
為常規(guī)轉換定義的“-”標志適用。如果給出了 '#' 標志,則將拋出 FormatFlagsConversionMismatchException。
寬度是要寫入輸出的最小字符數(shù)。如果轉換后的值的長度小于寬度,則輸出將用空格 ('\u0020') 填充,直到字符總數(shù)等于寬度。默認情況下,填充位于左側。如果給出“-”標志,則填充將在右側。如果未指定寬度,則沒有最小值。
精度不適用。如果指定了精度,則會拋出 IllegalFormatPrecisionException。
Percent
轉換不對應于任何參數(shù)。
Line Separator
轉換不對應于任何參數(shù)。
標志、寬度和精度不適用。 如果提供了任何一個 IllegalFormatFlagsException、IllegalFormatWidthException 和 IllegalFormatPrecisionException,將分別拋出。
Argument Index
格式說明符可以通過三種方式引用參數(shù):
例如:
formatter.format("%4$s %3$s %2$s %1$s %4$s %3$s %2$s %1$s",
"a", "b", "c", "d")
// -> "d c b a d c b a"
formatter.format("%s %s %<s %<s", "a", "b", "c", "d")
// -> "a b b b"
// "c" and "d" are ignored because they are not referenced
formatter.format("%s %s %s %s", "a", "b", "c", "d")
// -> "a b c d"
可以有一個格式字符串使用所有形式的索引,例如:
formatter.format("%2$s %s %<s %s", "a", "b", "c", "d")
// -> "b a a b"
// "c" and "d" are ignored because they are not referenced
參數(shù)的最大數(shù)量受《Java? 虛擬機規(guī)范》中定義的 Java 數(shù)組的最大維度限制。 如果參數(shù)索引與可用參數(shù)不對應,則拋出 MissingFormatArgumentException。
如果參數(shù)多于格式說明符,則忽略多余的參數(shù)。
除非另有說明,否則將 null 參數(shù)傳遞給此類中的任何方法或構造函數(shù)將導致拋出 NullPointerException。
修飾符和類型 | 類 | 描述 |
---|---|---|
static class | Formatter.BigDecimalLayoutForm | BigDecimal 格式的枚舉。 |
構造函數(shù) | 描述 |
---|---|
Formatter() | 構造一個新的格式化程序。 |
Formatter(File file) | 用指定的文件構造一個新的格式化程序。 |
Formatter(File file, String csn) | 使用指定的文件和字符集構造一個新的格式化程序。 |
Formatter(File file, String csn, Locale l) | 使用指定的文件、字符集和語言環(huán)境構造一個新的格式化程序。 |
Formatter(OutputStream os) | 使用指定的輸出流構造一個新的格式化程序。 |
Formatter(OutputStream os, String csn) | 使用指定的輸出流和字符集構造一個新的格式化程序。 |
Formatter(OutputStream os, String csn, Locale l) | 使用指定的輸出流、字符集和語言環(huán)境構造一個新的格式化程序。 |
Formatter(PrintStream ps) | 使用指定的打印流構造一個新的格式化程序。 |
Formatter(Appendable a) | 構造具有指定目標的新格式化程序。 |
Formatter(Appendable a, Locale l) | 構造具有指定目標和語言環(huán)境的新格式化程序。 |
Formatter(String fileName) | 構造具有指定文件名的新格式化程序。 |
Formatter(String fileName, String csn) | 使用指定的文件名和字符集構造一個新的格式化程序。 |
Formatter(String fileName, String csn, Locale l) | 使用指定的文件名、字符集和語言環(huán)境構造一個新的格式化程序。 |
Formatter(Locale l) | 構造具有指定語言環(huán)境的新格式化程序。 |
修飾符和類型 | 方法 | 描述 |
---|---|---|
void | close() | 關閉此格式化程序。 |
void | flush() | 刷新此格式化程序。 |
Formatter | format(String format, Object... args) | 使用指定的格式字符串和參數(shù)將格式化字符串寫入此對象的目標。 |
Formatter | format(Locale l, String format, Object... args) | 使用指定的語言環(huán)境、格式字符串和參數(shù)將格式化字符串寫入此對象的目標。 |
IOException | ioException() | 返回此格式化程序的 Appendable 上次拋出的 IOException。 |
Locale | locale() | 返回由構造此格式化程序設置的語言環(huán)境。 |
Appendable | out() | 返回輸出的目的地。 |
String | toString() | 返回在輸出目標上調用 toString() 的結果。 |
從類 java.lang.Object 繼承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
public Formatter()
構造一個新的格式化程序。
格式化輸出的目的地是一個 StringBuilder,可以通過調用 out() 來檢索它,并且可以通過調用 toString() 將其當前內容轉換為字符串。 對于此 Java 虛擬機實例,使用的語言環(huán)境是 Locale.Category#FORMAT 的 Locale#getDefault(Locale.Category)。
public Formatter(Appendable a)
構造具有指定目標的新格式化程序。
對于此 Java 虛擬機實例,使用的語言環(huán)境是 Locale.Category#FORMAT 的 Locale#getDefault(Locale.Category)。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
a | 格式化輸出的目的地。 如果 a 為 null,則將創(chuàng)建一個 StringBuilder。 |
public Formatter(Locale l)
構造具有指定語言環(huán)境的新格式化程序。
格式化輸出的目的地是一個 StringBuilder,可以通過調用 out() 來檢索它,并且可以通過調用 toString() 將其當前內容轉換為字符串。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
l | 在格式化期間應用的語言環(huán)境。 如果 l 為空,則不應用本地化。 |
public Formatter(Appendable a, Locale l)
構造具有指定目標和語言環(huán)境的新格式化程序。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
a | 格式化輸出的目的地。 如果 a 為 null,則將創(chuàng)建一個 StringBuilder。 |
l | 在格式化期間應用的語言環(huán)境。 如果 l 為空,則不應用本地化。 |
public Formatter(String fileName) throws FileNotFoundException
構造具有指定文件名的新格式化程序。
使用的字符集是此 Java 虛擬機實例的默認字符集。
對于此 Java 虛擬機實例,使用的語言環(huán)境是 Locale.Category#FORMAT 的 Locale#getDefault(Locale.Category)。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
fileName | 用作此格式化程序目標的文件的名稱。 如果文件存在,那么它將被截斷為零大小; 否則,將創(chuàng)建一個新文件。 輸出將被寫入文件并被緩沖。 |
Throws:
Throw名稱 | Throw描述 |
---|---|
SecurityException | 如果存在安全管理器并且 SecurityManager#checkWrite 拒絕對文件的寫訪問權限 |
FileNotFoundException | 如果給定的文件名不表示現(xiàn)有的可寫常規(guī)文件并且無法創(chuàng)建該名稱的新常規(guī)文件,或者在打開或創(chuàng)建文件時出現(xiàn)其他錯誤 |
public Formatter(String fileName, String csn) throws FileNotFoundException, UnsupportedEncodingException
使用指定的文件名和字符集構造一個新的格式化程序。
對于此 Java 虛擬機實例,使用的語言環(huán)境是 Locale.Category#FORMAT 的 Locale#getDefault(Locale.Category)。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
fileName | 用作此格式化程序目標的文件的名稱。 如果文件存在,那么它將被截斷為零大??; 否則,將創(chuàng)建一個新文件。 輸出將被寫入文件并被緩沖。 |
csn | 支持的字符集的名稱 |
Throws:
Throw名稱 | Throw描述 |
---|---|
FileNotFoundException | 如果給定的文件名不表示現(xiàn)有的可寫常規(guī)文件并且無法創(chuàng)建該名稱的新常規(guī)文件,或者在打開或創(chuàng)建文件時出現(xiàn)其他錯誤 |
SecurityException | 如果存在安全管理器并且 SecurityManager#checkWrite 拒絕對文件的寫訪問權限 |
UnsupportedEncodingException | 如果不支持命名字符集 |
public Formatter(String fileName, String csn, Locale l) throws FileNotFoundException, UnsupportedEncodingException
使用指定的文件名、字符集和語言環(huán)境構造一個新的格式化程序。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
fileName | 用作此格式化程序目標的文件的名稱。 如果文件存在,那么它將被截斷為零大?。?nbsp;否則,將創(chuàng)建一個新文件。 輸出將被寫入文件并被緩沖。 |
csn | 支持的字符集的名稱 |
l | 在格式化期間應用的語言環(huán)境。 如果 l 為空,則不應用本地化。 |
Throws:
Throw名稱 | Throw描述 |
---|---|
FileNotFoundException | 如果給定的文件名不表示現(xiàn)有的可寫常規(guī)文件并且無法創(chuàng)建該名稱的新常規(guī)文件,或者在打開或創(chuàng)建文件時出現(xiàn)其他錯誤 |
SecurityException | 如果存在安全管理器并且 SecurityManager#checkWrite 拒絕對文件的寫訪問權限 |
UnsupportedEncodingException | 如果不支持命名字符集 |
public Formatter(File file) throws FileNotFoundException
用指定的文件構造一個新的格式化程序。
使用的字符集是此 Java 虛擬機實例的默認字符集。
對于此 Java 虛擬機實例,使用的語言環(huán)境是 Locale.Category#FORMAT 的 Locale#getDefault(Locale.Category)。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
file | 用作此格式化程序目標的文件。 如果文件存在,那么它將被截斷為零大??; 否則,將創(chuàng)建一個新文件。 輸出將被寫入文件并被緩沖。 |
Throws:
Throw名稱 | Throw描述 |
---|---|
SecurityException | 如果存在安全管理器并且 SecurityManager#checkWrite 拒絕對文件的寫訪問權限 |
FileNotFoundException | 如果給定的文件對象不表示現(xiàn)有的可寫常規(guī)文件并且無法創(chuàng)建該名稱的新常規(guī)文件,或者在打開或創(chuàng)建文件時發(fā)生其他錯誤 |
public Formatter(File file, String csn) throws FileNotFoundException, UnsupportedEncodingException
使用指定的文件和字符集構造一個新的格式化程序。
對于此 Java 虛擬機實例,使用的語言環(huán)境是 Locale.Category#FORMAT 的 Locale#getDefault(Locale.Category)。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
file | 用作此格式化程序目標的文件。 如果文件存在,那么它將被截斷為零大?。?nbsp;否則,將創(chuàng)建一個新文件。 輸出將被寫入文件并被緩沖。 |
csn | 支持的字符集的名稱 |
Throws:
Throw名稱 | Throw描述 |
---|---|
FileNotFoundException | 如果給定的文件對象不表示現(xiàn)有的可寫常規(guī)文件并且無法創(chuàng)建該名稱的新常規(guī)文件,或者在打開或創(chuàng)建文件時發(fā)生其他錯誤 |
SecurityException | 如果存在安全管理器并且 SecurityManager#checkWrite 拒絕對文件的寫訪問權限 |
UnsupportedEncodingException | 如果不支持命名字符集 |
public Formatter(File file, String csn, Locale l) throws FileNotFoundException, UnsupportedEncodingException
使用指定的文件、字符集和語言環(huán)境構造一個新的格式化程序。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
file | 用作此格式化程序目標的文件。 如果文件存在,那么它將被截斷為零大?。?nbsp;否則,將創(chuàng)建一個新文件。 輸出將被寫入文件并被緩沖。 |
csn | 支持的字符集的名稱 |
l | 在格式化期間應用的語言環(huán)境。 如果 l 為空,則不應用本地化。 |
Throws:
Throw名稱 | Throw描述 |
---|---|
FileNotFoundException | 如果給定的文件對象不表示現(xiàn)有的可寫常規(guī)文件并且無法創(chuàng)建該名稱的新常規(guī)文件,或者在打開或創(chuàng)建文件時發(fā)生其他錯誤 |
SecurityException | 如果存在安全管理器并且 SecurityManager#checkWrite 拒絕對文件的寫訪問權限 |
UnsupportedEncodingException | 如果不支持命名字符集 |
public Formatter(PrintStream ps)
使用指定的打印流構造一個新的格式化程序。
對于此 Java 虛擬機實例,使用的語言環(huán)境是 Locale.Category#FORMAT 的 Locale#getDefault(Locale.Category)。
字符被寫入給定的 PrintStream 對象,因此使用該對象的字符集進行編碼。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
ps | 用作此格式化程序目標的流。 |
public Formatter(OutputStream os)
使用指定的輸出流構造一個新的格式化程序。
使用的字符集是此 Java 虛擬機實例的默認字符集。
對于此 Java 虛擬機實例,使用的語言環(huán)境是 Locale.Category#FORMAT 的 Locale#getDefault(Locale.Category)。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
os | 用作此格式化程序目標的輸出流。 輸出將被緩沖。 |
public Formatter(OutputStream os, String csn) throws UnsupportedEncodingException
使用指定的輸出流和字符集構造一個新的格式化程序。
對于此 Java 虛擬機實例,使用的語言環(huán)境是 Locale.Category#FORMAT 的 Locale#getDefault(Locale.Category)。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
os | 用作此格式化程序目標的輸出流。 輸出將被緩沖。 |
csn | 支持的字符集的名稱 |
Throws:
Throw名稱 | Throw描述 |
---|---|
UnsupportedEncodingException | 如果不支持命名字符集 |
public Formatter(OutputStream os, String csn, Locale l) throws UnsupportedEncodingException
使用指定的輸出流、字符集和語言環(huán)境構造一個新的格式化程序。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
os | 用作此格式化程序目標的輸出流。 輸出將被緩沖。 |
csn | 支持的字符集的名稱 |
l | 在格式化期間應用的語言環(huán)境。 如果 l 為空,則不應用本地化。 |
Throws:
Throw名稱 | Throw描述 |
---|---|
UnsupportedEncodingException | 如果不支持命名字符集 |
public Locale locale()
返回由構造此格式化程序設置的語言環(huán)境。
此對象的具有語言環(huán)境參數(shù)的格式方法不會更改此值。
返回:
如果未應用本地化,則為 null,否則為語言環(huán)境
Throws:
Throw名稱 | Throw描述 |
---|---|
FormatterClosedException | 如果此格式化程序已通過調用其 close() 方法關閉 |
public Appendable out()
返回輸出的目的地。
返回:
輸出的目的地
Throws:
Throw名稱 | Throw描述 |
---|---|
FormatterClosedException | 如果此格式化程序已通過調用其 close() 方法關閉 |
public String toString()
返回在輸出目標上調用 toString() 的結果。 例如,以下代碼將文本格式化為 StringBuilder,然后檢索結果字符串:
Formatter f = new Formatter();
f.format("Last reboot at %tc", lastRebootDate);
String s = f.toString();
// -> s == "Last reboot at Sat Jan 01 00:00:00 PST 2000"
此方法的調用與調用的行為方式完全相同
out().toString()
根據(jù) Appendable 的 toString 規(guī)范,返回的字符串可能包含也可能不包含寫入目標的字符。 例如,緩沖區(qū)通常在 toString() 中返回其內容,但流不能,因為數(shù)據(jù)被丟棄。
覆蓋:
類 Object 中的 toString
返回:
在輸出目標上調用 toString() 的結果
Throws:
Throw名稱 | Throw描述 |
---|---|
FormatterClosedException | 如果此格式化程序已通過調用其 close() 方法關閉 |
public void flush()
刷新此格式化程序。 如果目標實現(xiàn)了 Flushable 接口,則會調用其 flush 方法。
刷新格式化程序會將目標中的任何緩沖輸出寫入底層流。
指定者:
在接口 Flushable 中刷新
Throws:
Throw名稱 | Throw描述 |
---|---|
FormatterClosedException | 如果此格式化程序已通過調用其 close() 方法關閉 |
public void close()
關閉此格式化程序。 如果目標實現(xiàn)了 Closeable 接口,則將調用其 close 方法。
關閉格式化程序允許它釋放它可能持有的資源(例如打開的文件)。 如果格式化程序已經(jīng)關閉,則調用此方法無效。
在此格式化程序關閉后嘗試調用除 ioException() 之外的任何方法將導致 FormatterClosedException。
指定者:
在接口 AutoCloseable 中關閉
指定者:
在接口Closeable中關閉
public IOException ioException()
返回此格式化程序的 Appendable 上次拋出的 IOException。
如果目標的 append() 方法從不拋出 IOException,則此方法將始終返回 null。
返回:
Appendable 拋出的最后一個異常,如果不存在此類異常,則返回 null。
public Formatter format(String format, Object... args)
使用指定的格式字符串和參數(shù)將格式化字符串寫入此對象的目標。 使用的語言環(huán)境是在構造此格式化程序期間定義的語言環(huán)境。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
format | 格式字符串語法中描述的格式字符串。 |
args | 格式字符串中的格式說明符引用的參數(shù)。 如果參數(shù)多于格式說明符,則忽略多余的參數(shù)。 參數(shù)的最大數(shù)量受《Java? 虛擬機規(guī)范》中定義的 Java 數(shù)組的最大維度限制。 |
返回:
這個格式化程序
Throws:
Throw名稱 | Throw描述 |
---|---|
IllegalFormatException | 如果格式字符串包含非法語法、與給定參數(shù)不兼容的格式說明符、給定格式字符串的參數(shù)不足或其他非法條件。 |
FormatterClosedException | 如果此格式化程序已通過調用其 close() 方法關閉 |
public Formatter format(Locale l, String format, Object... args)
使用指定的語言環(huán)境、格式字符串和參數(shù)將格式化字符串寫入此對象的目標。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
l | 在格式化期間應用的語言環(huán)境。 如果 l 為空,則不應用本地化。 這不會更改在構造期間設置的此對象的語言環(huán)境。 |
format | 格式字符串語法中描述的格式字符串 |
args | 格式字符串中的格式說明符引用的參數(shù)。 如果參數(shù)多于格式說明符,則忽略多余的參數(shù)。 參數(shù)的最大數(shù)量受《Java? 虛擬機規(guī)范》中定義的 Java 數(shù)組的最大維度限制。 |
返回:
這個格式化程序
Throws:
Throw名稱 | Throw描述 |
---|---|
IllegalFormatException | 如果格式字符串包含非法語法、與給定參數(shù)不兼容的格式說明符、給定格式字符串的參數(shù)不足或其他非法條件。 |
FormatterClosedException | 如果此格式化程序已通過調用其 close() 方法關閉 |
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: