Класс Formatter
- Все реализованные интерфейсы:
-
Closeable,Flushable,AutoCloseable
public final class Formatter extends Object implements Closeable, Flushable
byte, BigDecimal, и Calendar. Ограниченная настройка форматирования для произвольных типов пользователя предоставляется через интерфейс Formattable. Форматеры не обязательно безопасны для многопоточного доступа. Обеспечение потоковой безопасности является опциональным и лежит на ответственности пользователей методов этого класса.
Форматированный вывод для языка Java сильно вдохновлен printf языка C. Хотя строки формата похожи на строки C, некоторые изменения были внесены для соответствия языку Java и использования некоторых его возможностей. Также форматирование в Java более строгое, чем в C; например, если преобразование несовместимо с флагом, будет брошено исключение. В 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"
Как и в sprintf(3) языке C, строки можно форматировать с помощью статического метода String.format:
// 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"
Организация
Данное описание разделено на два раздела. Первый раздел, Обзор, охватывает основные понятия форматирования. Этот раздел предназначен для пользователей, которые хотят быстро начать работу и знакомы с форматированным выводом в других языках программирования. Второй раздел, Подробности, охватывает конкретные детали реализации. Он предназначен для пользователей, которые хотят более точного описания поведения форматирования.
Обзор
Этот раздел предназначен для краткого обзора понятий форматирования. Для точного описания поведения см. раздел Подробности.
Синтаксис строк формата
Каждый метод, который производит форматированный вывод, требует строку формата и список аргументов. Строка формата — это String, которая может содержать фиксированный текст и один или несколько встроенных спецификаторов формата. Рассмотрим следующий пример:
Calendar c = ...;
String s = String.format("Duke's Birthday: %1$tm %1$te,%1$tY", c);
Эта строка формата является первым аргументом метода format. Она содержит три спецификатора формата "%1$tm", "%1$te" и "%1$tY", которые указывают, как должны обрабатываться аргументы и где они должны быть вставлены в текст. Остальные части строки формата — это фиксированный текст, включая "Dukes Birthday: " и любые другие пробелы или знаки препинания. Список аргументов состоит из всех аргументов, переданных методу после строки формата. В приведенном выше примере список аргументов имеет размер один и состоит из объекта Calendar c. - Спецификаторы формата для общих, символьных и числовых типов имеют следующий синтаксис:
%[argument_index$][flags][width][.precision]conversion
Необязательный индекс_аргумента — это целое десятичное число, указывающее позицию аргумента в списке аргументов. Первый аргумент обозначается "
1$", второй — "2$" и так далее.Необязательные флаги — это набор символов, которые изменяют формат вывода. Набор допустимых флагов зависит от преобразования.
Необязательная ширина — это положительное целое десятичное число, указывающее минимальное количество символов, которые должны быть записаны в вывод.
Необязательная точность — это неотрицательное целое десятичное число, обычно используемое для ограничения количества символов. Конкретное поведение зависит от преобразования.
Обязательное преобразование — это символ, указывающий, как должен быть отформатирован аргумент. Набор допустимых преобразований для данного аргумента зависит от типа данных аргумента.
- Спецификаторы формата для типов, используемых для представления дат и времени, имеют следующий синтаксис:
%[argument_index$][flags][width]conversion
Необязательные индекс_аргумента, флаги и ширина определяются так же, как и выше.
Обязательное преобразование — это последовательность из двух символов. Первый символ —
't'или'T'. Второй символ указывает используемый формат. Эти символы похожи на, но не полностью идентичны, символам, определённым в GNUdateи POSIXstrftime(3c). - Спецификаторы формата, которые не соответствуют аргументам, имеют следующий синтаксис:
%[flags][width]conversion
Необязательные флаги и ширина определяются так же, как и выше.
Обязательное преобразование — это символ, указывающий текст, который должен быть вставлен в вывод.
Преобразования
Преобразования разделены на следующие категории:
- Общие — могут быть применены к любому типу аргумента
- Символьные — могут быть применены к базовым типам, которые представляют символы Юникода:
char,Character,byte,Byte,short, иShort. Это преобразование также может быть применено к типамintиInteger, когдаCharacter.isValidCodePoint(int)возвращаетtrue - Числовые
- Целочисленные — могут быть применены к целочисленным типам Java:
byte,Byte,short,Short,intиInteger,long,Long, иBigInteger(но неcharилиCharacter) -
С плавающей точкой — может быть применён к типам с плавающей точкой Java:
float,Float,double,Double, иBigDecimal
- Целочисленные — могут быть применены к целочисленным типам Java:
- Дата/Время — может быть применён к типам Java, способным кодировать дату или время:
long,Long,Calendar,DateиTemporalAccessor - Процент — производит литерал
'%'('\u0025') - Разделитель строк — производит платформенно-зависимый разделитель строк
Для категорий Общие, Символьные, Числовые, Целочисленные и Дата/Время преобразования, если не указано иное, если аргумент arg равен null, то результатом является "null".
Следующая таблица обобщает поддерживаемые преобразования. Преобразования, обозначенные прописной буквой (например, 'B', 'H', 'S', 'C', 'X', 'E', 'G', 'A', и 'T'), идентичны соответствующим преобразованиям с маленькой буквой, за исключением того, что результат преобразуется в верхний регистр в соответствии с правилами текущей локали Locale. Если явная локаль не указана, ни при создании экземпляра, ни в качестве параметра вызова его метода, используется локаль default locale.
| Преобразование | Категория аргумента | Описание |
|---|---|---|
'b', 'B' |
общее | Если аргумент arg имеет тип null, то результатом будет "false". Если arg является boolean или Boolean, то результатом является строка, возвращаемая методом String.valueOf(arg). В противном случае результатом будет "true". |
'h', 'H' |
общее | Результат получается путем вызова Integer.toHexString(arg.hashCode()). |
's', 'S' |
общее | Если arg реализует интерфейс Formattable, то вызывается метод arg.formatTo. В противном случае результат получается путем вызова arg.toString(). |
'c', 'C' |
символ | Результатом является символ Unicode |
'd' |
целочисленный | Результат форматируется как десятичное целое число |
'o' |
целочисленный | Результат форматируется как восьмеричное целое число |
'x', 'X' |
целочисленный | Результат форматируется как шестнадцатеричное целое число |
'e', 'E' |
с плавающей точкой | Результат форматируется как десятичное число в компьютерной научной записи |
'f' |
с плавающей точкой | Результат форматируется как десятичное число |
'g', 'G' |
с плавающей точкой | Результат форматируется с использованием компьютерной научной записи или десятичного формата, в зависимости от точности и значения после округления. |
'a', 'A' |
с плавающей точкой | Результат форматируется как шестнадцатеричное число с плавающей точкой с мантиссой и показателем степени. Это преобразование не поддерживается для типа BigDecimal несмотря на то, что последний находится в категории аргументов с плавающей точкой. |
't', 'T' |
дата/время | Префикс для символов преобразования даты и времени. См. Преобразования даты и времени. |
'%' |
процент | Результатом является литерал '%' ('\u0025') |
'n' |
разделитель строки | Результатом является разделитель строк, специфичный для платформы |
Любые символы, не определенные явно как преобразования, являются недопустимыми и зарезервированы для будущих расширений.
Преобразования даты и времени
Следующие символы суффиксов преобразования даты и времени определены для преобразований 't' и 'T'. Типы похожи на, но не полностью идентичны, типам, определенным в GNU date и POSIX strftime(3c). Добавлены типы преобразований для доступа к функциям, специфичным для Java (например, 'L' для миллисекунд в секунде).
Следующие символы преобразования используются для форматирования времени:
'H' |
Час в 24-часовом формате, форматируется как двухзначное число с ведущим нулём по мере необходимости, например, 00 - 23. |
|---|---|
'I' |
Час в 12-часовом формате, форматируется как двухзначное число с ведущим нулём по мере необходимости, например, 01 - 12. |
'k' |
Час в 24-часовом формате, например, 0 - 23. |
'l' |
Час в 12-часовом формате, например, 1 - 12. |
'M' |
Минута в часе, форматируется как двухзначное число с ведущим нулём по мере необходимости, например, 00 - 59. |
'S' |
Секунды в минуте, форматируется как двухзначное число с ведущим нулём по мере необходимости, например, 00 - 60 ("60" - специальное значение, необходимое для поддержки високосных секунд). |
'L' |
Миллисекунда в секунде, форматируется как трехзначное число с ведущими нулями по мере необходимости, например, 000 - 999. |
'N' |
Наносекунда в секунде, форматируется как девятизначное число с ведущими нулями по мере необходимости, например, 000000000 - 999999999. |
'p' |
Маркер утра или дня в формате языка среды, например "am" или "pm". Использование префикса преобразования 'T' принудительно выводит эту строку в верхнем регистре. |
'z' |
Численный смещение часового пояса от GMT в стиле RFC 822, например, -0800. Это значение будет корректироваться по необходимости для летнего времени. Для long, Long и Date используется часовой пояс по умолчанию для этой инстанции виртуальной машины Java. |
'Z' |
Строка, представляющая аббревиатуру часового пояса. Это значение будет корректироваться по необходимости для летнего времени. Для long, Long и Date используется часовой пояс по умолчанию для этой инстанции виртуальной машины Java. Язык среды Formatter будет иметь приоритет над языком среды аргумента (если таковой имеется). |
's' |
Секунды с начала эпохи, начиная с 1 января 1970 00:00:00 UTC, т.е. Long.MIN_VALUE/1000 до Long.MAX_VALUE/1000. |
'Q' |
Миллисекунды с начала эпохи, начиная с 1 января 1970 00:00:00 UTC, т.е. Long.MIN_VALUE до Long.MAX_VALUE. |
Следующие символы преобразования используются для форматирования дат:
'B' |
Полное название месяца в формате языка среды, например "January", "February". |
|---|---|
'b' |
Сокращенное название месяца в формате языка среды, например "Jan", "Feb". |
'h' |
То же, что и 'b'. |
'A' |
Полное название дня недели в формате языка среды, например "Sunday", "Monday" |
'a' |
Сокращенное название дня недели в формате языка среды, например "Sun", "Mon" |
'C' |
Четырехзначный год, деленный на 100, форматированный как двухзначное число с ведущим нулём по мере необходимости, например, 00 - 99 |
'Y' |
Год, форматируется как минимум четырьмя цифрами с ведущими нулями по мере необходимости, например, 0092 равно 92 до н.э. для григорианского календаря. |
'y' |
Последние две цифры года, форматируются с ведущими нулями по мере необходимости, например, 00 - 99. |
'j' |
День года, форматируется как трехзначное число с ведущими нулями по мере необходимости, например, 001 - 366 для григорианского календаря. |
'm' |
Месяц, форматируется как двухзначное число с ведущим нулём по мере необходимости, например, 01 - 13. |
'd' |
День месяца, форматируется как двухзначное число с ведущим нулём по мере необходимости, например, 01 - 31 |
'e' |
День месяца, форматируется как двухзначное число, например, 1 - 31. |
Следующие символы преобразования используются для форматирования общих композиций дат/времени.
'R' |
Время, отформатированное для 24-часового формата, как "%tH:%tM" |
|---|---|
'T' |
Время, отформатированное для 24-часового формата, как "%tH:%tM:%tS". |
'r' |
Время, отформатированное для 12-часового формата, как "%tI:%tM:%tS %Tp". Позиция маркера утра или дня ('%Tp') может зависеть от локали. |
'D' |
Дата в формате "%tm/%td/%ty". |
'F' |
Полная дата в формате ISO 8601, отформатированная как "%tY-%tm-%td". |
'c' |
Дата и время в формате "%ta %tb %td %tT %tZ %tY", например, "Sun Jul 20 16:17:00 EDT 1969". |
Любые символы, не определённые явно как суффиксы преобразования даты/времени, являются недопустимыми и зарезервированы для будущих расширений.
Флаги
В следующей таблице приведены поддерживаемые флаги. y означает, что флаг поддерживается для указанных типов аргументов.
| Флаг | Общий | Символ | Целое | Вещественное | Дата/Время | Описание |
|---|---|---|---|---|---|---|
| '-' | y | y | y | y | y | Результат будет выровнен влево. |
| '#' | y1 | - | y3 | y | - | Результат должен использовать альтернативную форму, зависящую от преобразования |
| '+' | - | - | y4 | y | - | Результат всегда будет содержать знак |
| ' ' | - | - | y4 | y | - | Результат будет содержать ведущий пробел для положительных значений |
| '0' | - | - | y | y | - | Результат будет заполнен нулями |
| ',' | - | - | y2 | y5 | - | Результат будет содержать разделители группировки, специфичные для локали разделители группировки |
| '(' | - | - | y4 | y5 | - | Результат будет заключать отрицательные числа в скобки |
1 Зависит от определения Formattable.
2 Только для преобразования 'd'.
3 Только для преобразований 'o', 'x' и 'X'.
4 Для преобразований 'd', 'o', 'x' и 'X', применённых к BigInteger или 'd' применённых к byte, Byte, short, Short, int и Integer, long и Long.
5 Только для преобразований 'e', 'E', 'f', 'g' и 'G'.
Любые символы, не определённые явно как флаги, являются недопустимыми и зарезервированы для будущих расширений.
Ширина
Ширина — это минимальное количество символов, которые должны быть записаны в выходной поток. Для преобразования разделителя строк ширина неприменима; если она указана, будет выброшено исключение.
Точность
Для общих типов аргументов точность — это максимальное количество символов, которые должны быть записаны в выходной поток.
Для преобразований с плавающей запятой 'a', 'A', 'e', 'E' и 'f' точность — это количество цифр после десятичной точки. Если преобразование — 'g' или 'G', то точность — это общее количество цифр в полученном значении после округления.
Для символьных, целочисленных и временных аргументов, а также для преобразований процента и разделителя строк точность неприменима; если она указана, будет выброшено исключение.
Индекс аргумента
Индекс аргумента — это десятичное целое число, указывающее позицию аргумента в списке аргументов. Первый аргумент обозначается «1$», второй — «2$» и т. д.
Другой способ ссылки на аргументы по позиции — использование флага '<' ('\u003c'), который приводит к повторному использованию аргумента для предыдущего спецификатора формата. Например, следующие два оператора сгенерируют идентичные строки:
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);
Подробности
Этот раздел предназначен для предоставления подробной информации о поведении форматирования, включая условия и исключения, поддерживаемые типы данных, локализация и взаимодействие флагов, преобразований и типов данных. Для общего представления концепций форматирования см. Обзор
Любые символы, не определённые явно как преобразования, суффиксы преобразования даты/времени или флаги, являются недопустимыми и зарезервированы для будущих расширений. Использование такого символа в строке формата вызовет выброс UnknownFormatConversionException или UnknownFormatFlagsException.
Если спецификатор формата содержит ширину или точность с недопустимым значением или значением, которое не поддерживается, то будет выброшено IllegalFormatWidthException или IllegalFormatPrecisionException соответственно. Аналогично, значения нуля для индекса аргумента приведут к выбросу IllegalFormatException.
Если спецификатор формата содержит символ преобразования, который не применим к соответствующему аргументу, то будет выброшено IllegalFormatConversionException.
Значения точности должны находиться в диапазоне от нуля до Integer.MAX_VALUE включительно, в противном случае будет выброшено IllegalFormatPrecisionException.
Значения ширины должны находиться в диапазоне от одного до Integer.MAX_VALUE включительно, в противном случае будет выброшено IllegalFormatWidthException. Обратите внимание, что ширина может иметь отрицательное значение, но знак минус является флагом. Например, в строке формата "%-20s" ширина равна 20, а флаг — «-».
Значения индекса должны находиться в диапазоне от одного до Integer.MAX_VALUE включительно, в противном случае будет выброшено IllegalFormatException.
Все указанные исключения могут быть выброшены любыми из методов format класса Formatter, а также любыми удобными методами format, такими как String.format и PrintStream.printf.
Для преобразований категорий Общие, Символы, Числа, Целые и Дата/Время, если аргумент arg равен null, результат равен «null».
Преобразования, обозначенные заглавной буквой (т.е. 'B', 'H', 'S', 'C', 'X', 'E', 'G', 'A' и 'T'), аналогичны соответствующим строчным преобразованиям, за исключением того, что результат преобразуется в верхний регистр в соответствии с правилами текущей локали Locale. Если явной локали не указано при создании экземпляра или в качестве параметра вызова метода, используется локаль default locale.
Общие
Следующие общие преобразования могут быть применены к любому типу аргумента:
'b' |
'\u0062' |
Производит либо "true", либо "false", как возвращает Boolean.toString(boolean). Если аргумент — Если задан флаг |
|---|---|---|
'B' |
'\u0042' |
Версия аргумента 'b' в верхнем регистре. |
'h' |
'\u0068' |
Производит строку, представляющую значение хэш-кода объекта. Результат получается вызовом Если задан флаг |
'H' |
'\u0048' |
Версия аргумента 'h' в верхнем регистре. |
's' |
'\u0073' |
Производит строку. Если аргумент реализует Если задан флаг |
'S' |
'\u0053' |
Версия аргумента 's' в верхнем регистре. |
Следующие флаги применяются к общим преобразованиям:
'-' |
'\u002d' |
Выравнивает вывод влево. Пробелы ('\u0020') будут добавлены в конец преобразованного значения по мере необходимости для заполнения минимальной ширины поля. Если ширина не указана, то будет брошено исключение MissingFormatWidthException. Если этот флаг не задан, то вывод будет выровнен по правому краю. |
|---|---|---|
'#' |
'\u0023' |
Требует, чтобы вывод использовал альтернативную форму. Определение формы задается преобразованием. |
Ширина — минимальное количество символов, которое должно быть записано в вывод. Если длина преобразованного значения меньше ширины, то вывод будет дополнен пробелами (' ') ('\u0020') до тех пор, пока общее количество символов не станет равным ширине. По умолчанию дополнение выполняется слева. Если задан флаг '-', то дополнение выполняется справа. Если ширина не указана, то минимальной ширины нет.
Точность — максимальное количество символов, которое должно быть записано в вывод. Точность применяется до ширины, таким образом, вывод будет усечен до precision символов, даже если ширина больше точности. Если точность не указана, то нет явного ограничения на количество символов.
Символ
Это преобразование может быть применено кchar и Character. Оно также может быть применено к типам byte, Byte, short, и Short, int и Integer, когда Character.isValidCodePoint(int) возвращает true. Если возвращает false, то будет брошено исключение IllegalFormatCodePointException. 'c' |
'\u0063' |
Форматирует аргумент как символ Юникода, как описано в Представлении символов Юникода. Это может быть более одного 16-битного char в случае, когда аргумент представляет дополнительный символ. Если задан флаг |
|---|---|---|
'C' |
'\u0043' |
Версия аргумента 'c' в верхнем регистре. |
Флаг '-', определенный для Общих преобразований, применяется. Если задан флаг '#', то будет брошено исключение FormatFlagsConversionMismatchException.
Ширина определяется так же, как для Общих преобразований.
Точность неприменима. Если точность указана, то будет брошено исключение IllegalFormatPrecisionException.
Числовые
Числовые преобразования делятся на следующие категории:
Числовые типы будут форматироваться согласно следующему алгоритму:
После получения цифр для целой части, дробной части и экспоненты (в зависимости от типа данных) применяется следующее преобразование:
- Каждый символ цифры d в строке заменяется локально-специфичной цифрой, вычисленной относительно нулевой цифры текущей локали z; то есть d -
'0'+ z. - Если присутствует десятичная точка, подставляется десятичная точка, специфичная для данной локали.
- Если задан флаг
','('\u002c') флага, то локально-специфичный разделитель групп вставляется путем сканирования целой части строки справа налево и вставки разделителя через интервалы, определенные размером группировки локали grouping size. - Если задан флаг
'0', то локально-специфичные нулевые цифры вставляются после знака, если таковой имеется, и перед первой ненулевой цифрой до тех пор, пока длина строки не станет равна запрошенной ширине поля. - Если значение отрицательно, и задан флаг
'(', то добавляется символ'('('\u0028') в начало и')'('\u0029') в конец. - Если значение отрицательное (или плавающая запятая отрицательный ноль) и флаг
'('не задан, то в начале добавляется'-'('\u002d') - Если задан флаг
'+'и значение положительное или ноль (или плавающая запятая положительный ноль), то в начало добавляется'+'('\u002b').
Если значение — NaN или положительная бесконечность, то будут выведены строковые литералы "NaN" или "Infinity" соответственно. Если значение — отрицательная бесконечность, то вывод будет "(Infinity)", если задан флаг '(', в противном случае вывод будет "-Infinity". Эти значения не локализованы.
Байт, Короткое, Целое и Длинное
Следующие преобразования могут быть применены к byte, Byte, short, Short, int и Integer, long, и Long.
'd' |
'\u0064' |
Форматирует аргумент в виде десятичного целого числа. Применяется алгоритм локализации. Если задан флаг Если задан флаг |
|---|---|---|
'o' |
'\u006f' |
Форматирует аргумент как целое число в восьмеричной системе счисления. Локализация не применяется. Если x отрицательно, результат будет беззнаковым значением, полученным путём добавления 2n к значению, где Если задан флаг Если задан флаг Если заданы флаги |
'x' |
'\u0078' |
Форматирует аргумент как целое число в шестнадцатеричной системе счисления. Локализация не применяется. Если x отрицательно, результат будет беззнаковым значением, полученным путём добавления 2n к значению, где Если задан флаг Если задан флаг Если заданы флаги |
'X' |
'\u0058' |
Версия с заглавными буквами для 'x'. Весь строковый текст, представляющий число, будет преобразован в верхний регистр, включая 'x' (если есть) и все шестнадцатеричные цифры 'a' - 'f' ('\u0061' - '\u0066'). |
Если преобразование 'o', 'x', или 'X' и заданы оба флага '#' и '0', результат будет содержать индикатор системы счисления ('0' для восьмеричной и "0x" или "0X" для шестнадцатеричной), несколько нулей (в зависимости от ширины) и значение.
Если флаг '-' не задан, заполнение пробелами произойдёт перед знаком.
Следующие флаги применяются к целочисленным преобразованиям чисел:
'+' |
'\u002b' |
Требует, чтобы вывод включал знак «плюс» для всех положительных чисел. Если этот флаг не задан, знак будет присутствовать только у отрицательных значений. Если заданы оба флага |
|---|---|---|
' ' |
'\u0020' |
Требует включения дополнительного пробела ('\u0020') для неотрицательных значений. Если заданы оба флага |
'0' |
'\u0030' |
Требует дополнения вывода ведущими нулями до минимальной ширины поля после любого знака или индикатора системы счисления, кроме случаев преобразования NaN или бесконечности. Если ширина не указана, будет брошено исключение MissingFormatWidthException. Если заданы оба флага |
',' |
'\u002c' |
Требует включения разделителей групп, специфичных для локали, как описано в разделе «группировка» алгоритма локализации. |
'(' |
'\u0028' |
Требует добавления '(' ('\u0028') перед отрицательными значениями и ')' ('\u0029') после них. |
Если флагов нет, форматирование по умолчанию следующее:
- Вывод выравнивается по правому краю в пределах
width - Отрицательные числа начинаются со знака
'-'('\u002d') - Положительные числа и ноль не включают знак или дополнительный ведущий пробел
- Разделители групп не включаются
Ширина — минимальное количество символов, которое должно быть записано в вывод. Это включает знаки, цифры, разделители групп, индикатор системы счисления и скобки. Если длина преобразованного значения меньше ширины, вывод будет дополнен пробелами ('\u0020') до тех пор, пока общее количество символов не достигнет ширины. По умолчанию дополнение происходит слева. Если задан флаг '-', дополнение будет справа. Если ширина не указана, минимум отсутствует.
Точность не применима. Если точность указана, будет брошено исключение IllegalFormatPrecisionException.
Следующие преобразования могут быть применены к BigInteger.
'd' |
'\u0064' |
Требует форматирования вывода в виде десятичного целого числа. Применяется алгоритм локализации. Если задан флаг |
|---|---|---|
'o' |
'\u006f' |
Требует форматирования вывода как целого числа в восьмеричной системе счисления. Локализация не применяется. Если x отрицательно, результат будет знаковым значением, начинающимся с Если x положительно или равно нулю, и задан флаг Если задан флаг Если задан флаг Если задан флаг |
'x' |
'\u0078' |
Требует форматирования вывода как целого числа в шестнадцатеричной системе счисления. Локализация не применяется. Если x отрицательно, результат будет знаковым значением, начинающимся с Если x положительно или равно нулю, и задан флаг Если задан флаг Если задан флаг Если задан флаг |
'X' |
'\u0058' |
Версия с заглавными буквами для 'x'. Весь строковый текст, представляющий число, будет преобразован в верхний регистр, включая 'x' (если есть) и все шестнадцатеричные цифры 'a' - 'f' ('\u0061' - '\u0066'). |
Если преобразование является 'o', 'x' или 'X' и заданы оба флага '#' и '0', то результат будет содержать базовый индикатор ('0' для восьмеричной и "0x" или "0X" для шестнадцатеричной системы счисления), некоторое количество нулей (в зависимости от ширины) и значение.
Если задан флаг '0' и значение отрицательное, то заполнение нулями будет происходить после знака.
Если флаг '-' не задан, то заполнение пробелами будет происходить перед знаком.
Применяются все флаги, определенные для Byte, Short, Integer и Long. Поведение по умолчанию при отсутствии флагов такое же, как для Byte, Short, Integer и Long.
Спецификация ширины такая же, как определено для Byte, Short, Integer и Long.
Точность не применима. Если задана точность, то будет выброшено исключение IllegalFormatPrecisionException.
Следующие преобразования могут быть применены к float, Float, double и Double.
'e' |
'\u0065' |
Требуется, чтобы вывод был отформатирован с использованием научной нотации. Применяется алгоритм локализации. Форматирование величины m зависит от её значения. Если m является NaN или бесконечностью, то на выходе будут выводиться литеральные строки "NaN" или "Infinity" соответственно. Эти значения не локализованы. Если m является положительным или отрицательным нулем, то показатель степени будет В противном случае, результат представляет собой строку, которая отображает знак и величину (абсолютное значение) аргумента. Форматирование знака описано в алгоритме локализации. Форматирование величины m зависит от её значения. Пусть n - единственное целое число такое, что 10n <= m < 10n+1; тогда пусть a будет математически точным частным от деления m на 10n так, что 1 <= a < 10. Величина затем представляется как целая часть a, как одна десятичная цифра, за которой следует десятичный разделитель, за которым следуют десятичные цифры, представляющие дробную часть a, за которыми следует символ экспоненты Количество цифр в результате для дробной части m или a равно точности. Если точность не указана, то значение по умолчанию равно Если задан флаг |
|---|---|---|
'E' |
'\u0045' |
Вариант в верхнем регистре 'e'. Символ экспоненты будет 'E' ('\u0045'). |
'g' |
'\u0067' |
Требуется, чтобы вывод был отформатирован в общей научной нотации, как описано ниже. Применяется алгоритм локализации. После округления для заданной точности, форматирование результирующей величины m зависит от её значения. Если m больше или равно 10-4, но меньше 10точность, то оно представляется в десятичном формате. Если m меньше 10-4 или больше или равно 10точность, то оно представляется в научной нотации. Общее количество значащих цифр в m равно точности. Если точность не указана, то значение по умолчанию равно Если задан флаг |
'G' |
'\u0047' |
Вариант в верхнем регистре 'g'. |
'f' |
'\u0066' |
Требуется, чтобы вывод был отформатирован с использованием десятичного формата. Применяется алгоритм локализации. Результат представляет собой строку, которая отображает знак и величину (абсолютное значение) аргумента. Форматирование знака описано в алгоритме локализации. Форматирование величины m зависит от её значения. Если m NaN или бесконечность, то на выходе будут выводиться литеральные строки "NaN" или "Infinity" соответственно. Эти значения не локализованы. Величина форматируется как целая часть m, без ведущих нулей, за которой следует десятичный разделитель, за которым следуют одна или более десятичных цифр, представляющие дробную часть m. Количество цифр в результате для дробной части m или a равно точности. Если точность не указана, то значение по умолчанию равно |
'a' |
'\u0061' |
Требуется, чтобы вывод был отформатирован в шестнадцатеричной экспоненциальной форме. Локализация не применяется. Результат представляет собой строку, которая отображает знак и величину (абсолютное значение) аргумента x. Если x отрицательный или имеет значение отрицательного нуля, то результат будет начинаться с Если x положительный или имеет значение положительного нуля, и задан флаг Форматирование величины m зависит от её значения.
Если заданы флаги |
'A' |
'\u0041' |
Вариант в верхнем регистре 'a'. Вся строка, представляющая число, будет преобразована в верхний регистр, включая 'x' ('\u0078') и 'p' ('\u0070' и все шестнадцатеричные цифры 'a' - 'f' ('\u0061' - '\u0066'). |
Применяются все флаги, определенные для Byte, Short, Integer и Long.
Если задан флаг '#', то десятичный разделитель всегда будет присутствовать.
Если флаги не заданы, форматирование по умолчанию следующее:
- Вывод выравнивается по правому краю в пределах
width - Отрицательные числа начинаются с
'-' - Положительные числа и положительный ноль не включают знак или дополнительный ведущий пробел
- Разделители групп не включены
- Десятичный разделитель будет отображаться только в том случае, если за ним следует цифра
Ширина ширины — это минимальное количество символов, подлежащих записи в выходной поток. Это включает в себя любые знаки, цифры, разделители группировки, десятичные разделители, экспоненциальный символ, индикатор основания, скобки и строки, представляющие бесконечность и NaN, применимые по ситуации. Если длина преобразованного значения меньше ширины, выходной поток будет дополнен пробелами ('\u0020') до тех пор, пока общее количество символов не достигнет ширины. По умолчанию дополнение происходит слева. Если указан флаг '-', дополнение будет происходить справа. Если ширина не указана, минимального значения нет.
Если преобразование преобразование — 'e', 'E' или 'f', то точность — это количество цифр после десятичного разделителя. Если точность не указана, она предполагается равной 6.
Если преобразование — 'g' или 'G', то точность — это общее количество значащих цифр в полученном порядке величины после округления. Если точность не указана, значение по умолчанию равно 6. Если точность равна 0, она принимается равной 1.
Если преобразование — 'a' или 'A', то точность — это количество шестнадцатеричных цифр после точки. Если точность не указана, будут выведены все цифры, возвращаемые Double.toHexString(double).
Следующие преобразования могут быть применены BigDecimal.
'e' |
'\u0065' |
Требует форматирования вывода с использованием научной записи. Применяется алгоритм локализации. Форматирование величины m зависит от её значения. Если m — положительный или отрицательный ноль, то показатель степени будет В противном случае результатом будет строка, представляющая знак и абсолютное значение аргумента. Форматирование знака описано в алгоритме локализации. Форматирование величины m зависит от её значения. Пусть n — единственное целое число такое, что 10n <= m < 10n+1; тогда пусть a — математически точное частное m и 10n так, что 1 <= a < 10. Величина представляется затем целой частью a, как одна цифра, за которой следует десятичный разделитель, за которым следуют десятичные цифры, представляющие дробную часть a, за которыми следует символ степени Количество цифр в результате для дробной части m или a равно точности. Если точность не указана, значение по умолчанию равно Если указан флаг |
|---|---|---|
'E' |
'\u0045' |
Заглавная форма 'e'. Символ степени будет 'E' ('\u0045'). |
'g' |
'\u0067' |
Требует форматирования вывода в общем виде научной записи, как описано ниже. Применяется алгоритм локализации. После округления для точности, форматирование полученной величины m зависит от её значения. Если m больше или равно 10-4, но меньше 10точность, то оно представляется в десятичном формате. Если m меньше 10-4 или больше или равно 10точность, то оно представляется в научной записи. Общее количество значащих цифр в m равно точности. Если точность не указана, значение по умолчанию равно Если указан флаг |
'G' |
'\u0047' |
Заглавная форма 'g'. |
'f' |
'\u0066' |
Требует форматирования вывода в десятичном формате. Применяется алгоритм локализации. Результатом является строка, представляющая знак и абсолютное значение аргумента. Форматирование знака описано в алгоритме локализации. Форматирование величины m зависит от её значения. Величина форматируется как целая часть m без ведущих нулей, за которой следует десятичный разделитель, за которым следуют одна или несколько десятичных цифр, представляющих дробную часть m. Количество цифр в результате для дробной части m или a равно точности. Если точность не указана, значение по умолчанию равно |
Все флаги, определённые для Byte, Short, Integer и Long, применяются.
Если указан флаг '#', десятичный разделитель всегда присутствует.
Поведение по умолчанию при отсутствии флагов такое же, как у Float и Double.
Указание ширины и точности такое же, как определено для Float и Double.
Дата/Время
Это преобразование может быть применено к long, Long, Calendar, Date и TemporalAccessor
't' |
'\u0074' |
Префикс для символов преобразования даты и времени. |
|---|---|---|
'T' |
'\u0054' |
Заглавная форма 't'. |
Следующие символы преобразования даты и времени определены для преобразований 't' и 'T'. Типы похожи, но не полностью идентичны тем, что определены GNU date и POSIX strftime(3c). Предоставляются дополнительные типы преобразования для доступа к специфичным для Java функциям (например, 'L' для миллисекунд в пределах секунды).
Следующие символы преобразования используются для форматирования времени:
'H' |
'\u0048' |
Час по 24-часовому формату, отформатированный как две цифры с ведущим нулем при необходимости, например, 00 - 23. 00 соответствует полуночи. |
|---|---|---|
'I' |
'\u0049' |
Час по 12-часовому формату, отформатированный как две цифры с ведущим нулем при необходимости, например, 01 - 12. 01 соответствует часу (утреннему или вечернему). |
'k' |
'\u006b' |
Час по 24-часовому формату, например, 0 - 23. 0 соответствует полуночи. |
'l' |
'\u006c' |
Час по 12-часовому формату, например, 1 - 12. 1 соответствует часу (утреннему или вечернему). |
'M' |
'\u004d' |
Минута в часе, отформатированная как две цифры с ведущим нулем при необходимости, например, 00 - 59. |
'S' |
'\u0053' |
Секунды в минуте, отформатированные как две цифры с ведущим нулем при необходимости, например, 00 - 60 ("60" — специальное значение, необходимое для поддержки високосных секунд). |
'L' |
'\u004c' |
Миллисекунда в секунде, отформатированная как три цифры с ведущими нулями при необходимости, например, 000 - 999. |
'N' |
'\u004e' |
Наносекунда в секунде, отформатированная как девять цифр с ведущими нулями при необходимости, например, 000000000 - 999999999. Точность этого значения ограничена разрешением базовой операционной системы или аппаратного обеспечения. |
'p' |
'\u0070' |
Локализованный маркер "am" или "pm" (утра или дня) в нижнем регистре. Используйте префикс преобразования 'T', чтобы принудительно вывести этот результат в верхнем регистре. (Обратите внимание, что 'p' даёт вывод в нижнем регистре. Это отличается от GNU date и POSIX strftime(3c), которые выдают вывод в верхнем регистре.) |
'z' |
'\u007a' |
Числовой смещение часового пояса от GMT в стиле RFC 822, например, -0800. Это значение будет скорректировано при необходимости для перехода на летнее время. Для long, Long и Date используется часовой пояс по умолчанию для данной инстанции виртуальной машины Java. |
'Z' |
'\u005a' |
Строковое представление сокращения часового пояса. Это значение будет скорректировано при необходимости для перехода на летнее время. Для long, Long и Date используется часовой пояс по умолчанию для данной инстанции виртуальной машины Java. Локаль форматировщика перебивает локаль аргумента (если таковой имеется). |
's' |
'\u0073' |
Строка, представляющая секунды с начала эпохи, начиная с 1 января 1970 00:00:00 UTC, т.е. Long.MIN_VALUE/1000 до Long.MAX_VALUE/1000. |
'Q' |
'\u004f' |
Миллисекунды с начала эпохи, начиная с 1 января 1970 00:00:00 UTC, т.е. Long.MIN_VALUE до Long.MAX_VALUE. Точность этого значения ограничена разрешением базовой операционной системы или аппаратного обеспечения. |
Для форматирования дат используются следующие символы преобразования:
'B' |
'\u0042' |
Полное название месяца в зависимости от локали, например, "January", "February". |
|---|---|---|
'b' |
'\u0062' |
Сокращённое название месяца в зависимости от локали, например, "Jan", "Feb". |
'h' |
'\u0068' |
То же, что и 'b'. |
'A' |
'\u0041' |
Полное название дня недели в зависимости от локали, например, "Sunday", "Monday" |
'a' |
'\u0061' |
Сокращённое название дня недели в зависимости от локали, например, "Sun", "Mon" |
'C' |
'\u0043' |
Четырёхзначный год, разделённый на 100, отформатированный как две цифры с ведущим нулем при необходимости, например, 00 - 99 |
'Y' |
'\u0059' |
Год, отформатированный как минимум четырьмя цифрами с ведущими нулями при необходимости, например, 0092 равно 92 н.э. для григорианского календаря. |
'y' |
'\u0079' |
Две последние цифры года, отформатированные с ведущими нулями при необходимости, например, 00 - 99. |
'j' |
'\u006a' |
День года, отформатированный как три цифры с ведущими нулями при необходимости, например, 001 - 366 для григорианского календаря. 001 соответствует первому дню года. |
'm' |
'\u006d' |
Месяц, отформатированный как две цифры с ведущими нулями при необходимости, например, 01 - 13, где "01" — первый месяц года, и ("13" — специальное значение, необходимое для поддержки лунных календарей). |
'd' |
'\u0064' |
День месяца, отформатированный как две цифры с ведущими нулями при необходимости, например, 01 - 31, где "01" — первый день месяца. |
'e' |
'\u0065' |
День месяца, отформатированный как две цифры, например, 1 - 31, где "1" — первый день месяца. |
Для форматирования общих композиций дат/времени используются следующие символы преобразования.
'R' |
'\u0052' |
Время по 24-часовому формату как "%tH:%tM" |
|---|---|---|
'T' |
'\u0054' |
Время по 24-часовому формату как "%tH:%tM:%tS". |
'r' |
'\u0072' |
Время по 12-часовому формату как "%tI:%tM:%tS
%Tp". Позиция маркера утра или дня ('%Tp') может зависеть от локали. |
'D' |
'\u0044' |
Дата, отформатированная как "%tm/%td/%ty". |
'F' |
'\u0046' |
Полная дата в формате ISO 8601, отформатированная как "%tY-%tm-%td". |
'c' |
'\u0063' |
Дата и время, отформатированные как "%ta %tb %td %tT %tZ %tY", например, "Sun Jul 20 16:17:00 EDT 1969". |
Применяется флаг '-' , определённый для общих преобразований. Если задан флаг '#', будет выброшено исключение FormatFlagsConversionMismatchException.
Ширина — это минимальное количество символов, которое должно быть записано в выходной поток. Если длина преобразованного значения меньше, чем width, то вывод будет дополнен пробелами ('\u0020') до тех пор, пока общее количество символов не станет равным ширине. По умолчанию дополнение происходит слева. Если задан флаг '-', то дополнение будет справа. Если ширина не указана, то минимального значения нет.
Точность не применима. Если точность указана, будет выброшено исключение IllegalFormatPrecisionException.
Процент
Преобразование не соответствует ни одному аргументу.
'%' |
Результатом является буквальный '%' ('\u0025') Ширина — это минимальное количество символов, которое должно быть записано в выходной поток, включая Флаг Точность не применима. Если точность указана, будет выброшено исключение |
|---|
Разделитель строк
Преобразование не соответствует ни одному аргументу.
'n' |
специфический для платформы разделитель строк, возвращаемый методом System.lineSeparator(). |
|---|
Флаги, ширина и точность не применяются. Если они указаны, будут выброшены исключения IllegalFormatFlagsException, IllegalFormatWidthException и IllegalFormatPrecisionException соответственно.
Индекс аргумента
Спецификаторы формата могут ссылаться на аргументы тремя способами:
- Явное индексирование используется, когда спецификатор формата содержит индекс аргумента. Индекс аргумента — это десятичное целое число, указывающее позицию аргумента в списке аргументов. Первый аргумент обозначается как "
1$, второй — как "2$" и т. д. К одному аргументу можно обратиться несколько раз.Например:
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" - Относительное индексирование используется, когда спецификатор формата содержит флаг
'<'('\u003c'), который заставляет повторно использовать аргумент для предыдущего спецификатора формата. Если предыдущего аргумента нет, то вызывается исключениеMissingFormatArgumentException.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
Максимальное количество аргументов ограничено максимальным размером массива Java, как определено в Спецификации виртуальной машины Java. Если индекс аргумента не соответствует доступному аргументу, то вызывается исключение MissingFormatArgumentException.
Если аргументов больше, чем спецификаторов формата, дополнительные аргументы игнорируются.
Если не указано иное, передача null аргумента в любой метод или конструктор в этом классе вызовет исключение NullPointerException.
- Since:
- 1.5
Краткое описание вложенных классов
| Модификатор и тип | Класс | Описание |
|---|---|---|
static enum |
Formatter.BigDecimalLayoutForm |
Перечисление для форматирования BigDecimal. |
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
Formatter() |
Создаёт новый форматировщик. |
Formatter |
Создаёт новый форматировщик с указанным файлом. |
Formatter |
Создаёт новый форматировщик с указанным файлом и кодировкой. |
Formatter |
Создаёт новый форматировщик с указанным файлом, кодировкой и локалью. |
Formatter |
Создаёт новый форматировщик с указанным файлом, кодировкой и локалью. |
Formatter |
Создаёт новый форматировщик с указанным потоком вывода. |
Formatter |
Создаёт новый форматировщик с указанным потоком вывода и кодировкой. |
Formatter |
Создаёт новый форматировщик с указанным потоком вывода, кодировкой и локалью. |
Formatter |
Создаёт новый форматировщик с указанным потоком вывода, кодировкой и локалью. |
Formatter |
Создаёт новый форматировщик с указанным потоком печати. |
Formatter |
Создаёт новый форматировщик с указанным назначением. |
Formatter |
Создаёт новый форматировщик с указанным назначением и локалью. |
Formatter |
Создаёт новый форматировщик с указанным именем файла. |
Formatter |
Создаёт новый форматировщик с указанным именем файла и кодировкой. |
Formatter |
Создаёт новый форматировщик с указанным именем файла, кодировкой и локалью. |
Formatter |
Создаёт новый форматировщик с указанным именем файла, кодировкой и локалью. |
Formatter |
Создаёт новый форматировщик с указанной локалью. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
close() |
Закрывает этот форматировщик. |
void |
flush() |
Очищает буфер форматировщика. |
Formatter |
format |
Записывает отформатированную строку в назначение этого объекта, используя указанную строку формата и аргументы. |
Formatter |
format |
Записывает отформатированную строку в назначение этого объекта, используя указанную локаль, строку формата и аргументы. |
IOException |
ioException() |
Возвращает IOException последнее исключение, выброшенное форматировщиком Appendable. |
Locale |
locale() |
Возвращает локаль, установленную при создании этого форматировщика. |
Appendable |
out() |
Возвращает назначение для вывода. |
String |
toString() |
Возвращает результат вызова toString() на назначении для вывода. |
Подробное описание конструкторов
Форматтер
public Formatter()
Назначение отформатированного вывода — StringBuilder, который можно получить, вызвав out(), и содержимое которого можно преобразовать в строку, вызвав toString(). Используемый язык — по умолчанию для форматирования для данной виртуальной машины Java.
Форматтер
public Formatter(Appendable a)
Используемый язык — по умолчанию для форматирования для данной виртуальной машины Java.
- Параметры:
-
a- Место назначения отформатированного вывода. Еслиaравноnull, то будет созданStringBuilder.
Форматтер
public Formatter(Locale l)
Назначение отформатированного вывода — StringBuilder, который можно получить, вызвав out(), и содержимое которого можно преобразовать в строку, вызвав toString().
- Параметры:
-
l- Язык, применяемый при форматировании. Еслиlравноnull, то локализация не применяется.
Форматтер
public Formatter(Appendable a, Locale l)
- Параметры:
-
a- Место назначения отформатированного вывода. Еслиaравноnull, то будет созданStringBuilder. -
l- Язык, применяемый при форматировании. Еслиlравноnull, то локализация не применяется.
Форматтер
public Formatter(String fileName) throws FileNotFoundException
Используемый набор символов — набор символов по умолчанию для данной виртуальной машины Java.
Используемый язык — по умолчанию для форматирования для данной виртуальной машины Java.
- Параметры:
-
fileName- Имя файла, используемого в качестве места назначения этого форматтера. Если файл существует, он будет обнулен; в противном случае будет создан новый файл. Вывод будет записан в файл с буферизацией. - Исключения:
-
SecurityException- Если присутствует менеджер безопасности иcheckWrite(fileName)отказывается предоставить доступ для записи в файл -
FileNotFoundException- Если указанное имя файла не соответствует существующему, доступному для записи обычному файлу и новый обычный файл с таким именем создать невозможно, или при возникновении других ошибок при открытии или создании файла
Форматтер
public Formatter(String fileName, String csn) throws FileNotFoundException, UnsupportedEncodingException
Используемый язык — по умолчанию для форматирования для данной виртуальной машины Java.
- Параметры:
-
fileName- Имя файла, используемого в качестве места назначения этого форматтера. Если файл существует, он будет обнулен; в противном случае будет создан новый файл. Вывод будет записан в файл с буферизацией. -
csn- Имя поддерживаемого набора символов - Исключения:
-
FileNotFoundException- Если указанное имя файла не соответствует существующему, доступному для записи обычному файлу и новый обычный файл с таким именем создать невозможно, или при возникновении других ошибок при открытии или создании файла -
SecurityException- Если присутствует менеджер безопасности иcheckWrite(fileName)отказывается предоставить доступ для записи в файл -
UnsupportedEncodingException- Если указанный набор символов не поддерживается
Форматтер
public Formatter(String fileName, String csn, Locale l) throws FileNotFoundException, UnsupportedEncodingException
- Параметры:
-
fileName- Имя файла, используемого в качестве места назначения этого форматтера. Если файл существует, он будет обнулен; в противном случае будет создан новый файл. Вывод будет записан в файл с буферизацией. -
csn- Имя поддерживаемого набора символов -
l- Язык, применяемый при форматировании. Еслиlравноnull, то локализация не применяется. - Исключения:
-
FileNotFoundException- Если указанное имя файла не соответствует существующему, доступному для записи обычному файлу и новый обычный файл с таким именем создать невозможно, или при возникновении других ошибок при открытии или создании файла -
SecurityException- Если присутствует менеджер безопасности иcheckWrite(fileName)отказывается предоставить доступ для записи в файл -
UnsupportedEncodingException- Если указанный набор символов не поддерживается
Форматтер
public Formatter(String fileName, Charset charset, Locale l) throws IOException
- Параметры:
-
fileName- Имя файла, используемого в качестве места назначения этого форматтера. Если файл существует, он будет обнулен; в противном случае будет создан новый файл. Вывод будет записан в файл с буферизацией. -
charset- набор символов -
l- Язык, применяемый при форматировании. Еслиlравноnull, то локализация не применяется. - Исключения:
-
IOException- если произошла ошибка ввода/вывода при открытии или создании файла -
SecurityException- Если присутствует менеджер безопасности иcheckWrite(fileName)отказывается предоставить доступ для записи в файл -
NullPointerException- еслиfileNameилиcharsetравныnull.
Форматтер
public Formatter(File file) throws FileNotFoundException
Используемый набор символов — набор символов по умолчанию для данной виртуальной машины Java.
Используемый язык — по умолчанию для форматирования для данной виртуальной машины Java.
- Параметры:
-
file- Файл, используемый в качестве места назначения этого форматтера. Если файл существует, он будет обнулен; в противном случае будет создан новый файл. Вывод будет записан в файл с буферизацией. - Исключения:
-
SecurityException- Если присутствует менеджер безопасности иcheckWrite(file.getPath())отказывается предоставить доступ для записи в файл -
FileNotFoundException- Если указанный объект файла не соответствует существующему, доступному для записи обычному файлу и новый обычный файл с таким именем создать невозможно, или при возникновении других ошибок при открытии или создании файла
Форматтер
public Formatter(File file, String csn) throws FileNotFoundException, UnsupportedEncodingException
Используемый язык — по умолчанию для форматирования для данной виртуальной машины Java.
- Параметры:
-
file- Файл, используемый в качестве места назначения этого форматтера. Если файл существует, он будет обнулен; в противном случае будет создан новый файл. Вывод будет записан в файл с буферизацией. -
csn- Имя поддерживаемого набора символов - Исключения:
-
FileNotFoundException- Если указанный объект файла не соответствует существующему, доступному для записи обычному файлу и новый обычный файл с таким именем создать невозможно, или при возникновении других ошибок при открытии или создании файла -
SecurityException- Если присутствует менеджер безопасности иcheckWrite(file.getPath())отказывается предоставить доступ для записи в файл -
UnsupportedEncodingException- Если указанный набор символов не поддерживается
Форматировщик
public Formatter(File file, String csn, Locale l) throws FileNotFoundException, UnsupportedEncodingException
- Параметры:
-
file- Файл, используемый в качестве назначения для этого форматировщика. Если файл существует, он будет обнулён; в противном случае будет создан новый файл. Вывод будет записан в файл и буферизован. -
csn- Имя поддерживаемой кодировки. -
l- Локаль, применяемая во время форматирования. Еслиlравнаnull, то локализация не применяется. - Исключения:
-
FileNotFoundException- Если заданный объект файла не обозначает существующий, доступный для записи обычный файл, и новый обычный файл с таким именем не может быть создан, или если произошла какая-либо другая ошибка при открытии или создании файла -
SecurityException- Если присутствует менеджер безопасности, иcheckWrite(file.getPath())отказывается предоставить доступ на запись к файлу -
UnsupportedEncodingException- Если указанная кодировка не поддерживается
Форматировщик
public Formatter(File file, Charset charset, Locale l) throws IOException
- Параметры:
-
file- Файл, используемый в качестве назначения для этого форматировщика. Если файл существует, он будет обнулён; в противном случае будет создан новый файл. Вывод будет записан в файл и буферизован. -
charset- Кодировка -
l- Локаль, применяемая во время форматирования. Еслиlравнаnull, то локализация не применяется. - Исключения:
-
IOException- если произошла ошибка ввода-вывода во время открытия или создания файла -
SecurityException- Если присутствует менеджер безопасности, иcheckWrite(file.getPath())отказывается предоставить доступ на запись к файлу -
NullPointerException- еслиfileилиcharsetравнаnull.
Форматировщик
public Formatter(PrintStream ps)
Использована по умолчанию локаль для форматирования для этого экземпляра виртуальной машины Java.
Символы записываются в указанный PrintStream объект и, следовательно, закодированы с использованием кодировки этого объекта.
- Параметры:
-
ps- Поток для использования в качестве назначения для этого форматировщика.
Форматировщик
public Formatter(OutputStream os)
Использована по умолчанию кодировка для этого экземпляра виртуальной машины Java.
Использована по умолчанию локаль для форматирования для этого экземпляра виртуальной машины Java.
- Параметры:
-
os- Поток вывода для использования в качестве назначения для этого форматировщика. Вывод будет буферизован.
Форматировщик
public Formatter(OutputStream os, String csn) throws UnsupportedEncodingException
Использована по умолчанию локаль для форматирования для этого экземпляра виртуальной машины Java.
- Параметры:
-
os- Поток вывода для использования в качестве назначения для этого форматировщика. Вывод будет буферизован. -
csn- Имя поддерживаемой кодировки - Исключения:
-
UnsupportedEncodingException- Если указанная кодировка не поддерживается
Форматировщик
public Formatter(OutputStream os, String csn, Locale l) throws UnsupportedEncodingException
- Параметры:
-
os- Поток вывода для использования в качестве назначения для этого форматировщика. Вывод будет буферизован. -
csn- Имя поддерживаемой кодировки -
l- Локаль, применяемая во время форматирования. Еслиlравнаnull, то локализация не применяется. - Исключения:
-
UnsupportedEncodingException- Если указанная кодировка не поддерживается
Форматировщик
public Formatter(OutputStream os, Charset charset, Locale l)
- Параметры:
-
os- Поток вывода для использования в качестве назначения для этого форматировщика. Вывод будет буферизован. -
charset- Кодировка -
l- Локаль, применяемая во время форматирования. Еслиlравнаnull, то локализация не применяется. - Исключения:
-
NullPointerException- еслиosилиcharsetравнаnull.
Подробное описание методов
locale
public Locale locale()
Метод format для этого объекта с аргументом locale не изменяет это значение.
- Возвращает:
-
nullесли локализация не применяется, в противном случае локаль - Исключения:
-
FormatterClosedException- Если этот форматировщик был закрыт путём вызова его методаclose()
out
public Appendable out()
- Возвращает:
- Назначение для вывода
- Исключения:
-
FormatterClosedException- Если этот форматировщик был закрыт путём вызова его методаclose()
toString
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() В зависимости от спецификации toString для Appendable, возвращаемая строка может или не может содержать символы, записанные в назначение. Например, буферы обычно возвращают своё содержимое в toString(), но потоки не могут, так как данные отбрасываются.
- Overrides:
-
toStringв классеObject - Возвращает:
- Результат вызова
toString()для назначения вывода - Исключения:
-
FormatterClosedException- Если этот форматировщик был закрыт путём вызова его методаclose()
flush
public void flush()
Flushable, его метод flush будет вызван. Очистка форматировщика записывает любой буферизованный вывод в назначении в базовый поток.
- Specified by:
-
flushв интерфейсеFlushable - Исключения:
-
FormatterClosedException- Если этот форматировщик был закрыт путём вызова его методаclose()
close
public void close()
Closeable, его метод close будет вызван. Закрытие форматировщика позволяет освободить ресурсы, которые он может удерживать (например, открытые файлы). Если форматировщик уже закрыт, вызов этого метода не имеет эффекта.
Попытка вызвать любые методы, кроме ioException() в этом форматировщике после его закрытия приведёт к FormatterClosedException.
- Specified by:
-
closeв интерфейсеAutoCloseable - Specified by:
-
closeв интерфейсеCloseable
ioException
public IOException ioException()
IOException последний выброшенный этим форматировщиком Appendable. Если метод append() назначения никогда не бросает IOException, то этот метод всегда вернёт null.
- Возвращает:
- Последнее исключение, выброшенное Appendable, или
nullесли такое исключение не существует.
форматировать
public Formatter format(String format, Object... args)
- Параметры:
-
format- Строка формата, как описано в Синтаксисе строки формата. -
args- Аргументы, на которые ссылаются спецификаторы формата в строке формата. Если аргументов больше, чем спецификаторов формата, лишние аргументы игнорируются. Максимальное количество аргументов ограничено максимальным размером массива Java, определённым в Спецификации виртуальной машины Java. - Возвращает:
- Этот форматировщик
- Исключения:
-
IllegalFormatException- Если строка формата содержит неверный синтаксис, спецификатор формата несовместим с заданными аргументами, недостаточно аргументов для заданной строки формата или другие недопустимые условия. Для описания всех возможных ошибок форматирования см. раздел Подробности спецификации класса форматировщика. -
FormatterClosedException- Если этот форматировщик был закрыт путём вызова методаclose()
форматировать
public Formatter format(Locale l, String format, Object... args)
- Параметры:
-
l- Язык языка, применяемый во время форматирования. Еслиlравенnull, то локализация не применяется. Это не изменяет язык этого объекта, установленный во время его создания. -
format- Строка формата, как описано в Синтаксисе строки формата -
args- Аргументы, на которые ссылаются спецификаторы формата в строке формата. Если аргументов больше, чем спецификаторов формата, лишние аргументы игнорируются. Максимальное количество аргументов ограничено максимальным размером массива Java, определённым в Спецификации виртуальной машины Java. - Возвращает:
- Этот форматировщик
- Исключения:
-
IllegalFormatException- Если строка формата содержит неверный синтаксис, спецификатор формата несовместим с заданными аргументами, недостаточно аргументов для заданной строки формата или другие недопустимые условия. Для описания всех возможных ошибок форматирования см. раздел Подробности спецификации класса форматировщика. -
FormatterClosedException- Если этот форматировщик был закрыт путём вызова методаclose()
© 1993, 2021, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Formatter.html