четверг, 4 ноября 2010 г.

Java I/O formating

Форматирование представляются два класса:
PrintWriter -- символьное.
PrintStream -- байтовое.
Второй практически нигде не используется, единственное где его можно увидеть это System.out и System.err. Любые кастомные нужды может и должен удовлетворять PrintWriter.

Чтобы вывести что-нибудь(любого типа) можно воспользоваться print() или println() (тотже принт + лайн терминатор + сливает буфер). Эти два метода воспользуются методом toString() аргументного обьекта. Некоторые обьекты основываясь на дефолтовом Locale будут коректировать свой формат в toString, но а что же делать например с числами с плавающей точкой, если нужно чтобы после точки было только 5 цифр?

Более широкий функционал у метода format (он кстати тоже как и принтлн сливает буффер(flush)). Вот пример:

public class Format {
    public static void main(String[] args) {
        System.out.format("%f, %1$+020.10f %n", Math.PI);
    }
}
Результат:
3.141593, +00000003.1415926536
 








Argument Index -- это какой аргумент по счету поставить сюда. Есть вариант в нашем случае поставить просто <, что означает предыдуший аргумент
Флаги -- тут у нас + означает, что он должен всегда предшевствовать выведенному обькту, 0 означает, что все пучтые места заполнять нулями. Откуда беруться пустые места, будет понятно со следующейго пояснения.
Ширина -- это сколько символов должен полюбому занимать этот обьект, если символов меньше они заполняются пробелами, или могут 0, если поставить соответсвующий флаг:)
Точность -- это количество цифр после точки в плавающих цифрах.
Превращение -- это что за тип аргумента.

Чтобы иметь дело со стандартными потоками ввода/вывода через символьный принт, и символьный райтер, мы можем работать через обьект System.console, + этот обьект дает нам замечательную возможность читать параль readPassword(), не раскрывая его окружающим.

%n -- это кстати разумный терминатор, который подставляет нужный терминатор в зависимости от ОС. Его лучше использовать, чем просто \n или \r\n.

Комментариев нет:

Отправить комментарий