Для текстовых выходных данных лучше всего использовать класс PrintWriter. Этот класс имеет методы для вывода строк и чисел в текстовом формате. Доступен даже удобный конструктор для связывания PrintWriter с FileWriter. Операторы
1 |
PrintWriter out = new PrintWriter("employee.txt"); |
и
1 |
PrintWriter out = new PrintWriter(new FileWriter("employee.txt")); |
являются полностью эквивалентными.Для выполнения записи в PrintWriter применяются все те же самые методы print, println и printf, что и в случае System.out. Эти методы можно использовать для вывода чисел(int, short, long, float, double), символов, значений boolean, строк и объектов.
Например, возьмем следующий код:
1 2 3 4 5 |
String name = "Harry Hacker"; double salary = 75000; out.print(name); out.print(' '); out.println(salary); |
Он записывает символы:
Harry Hacker 75000.0 в out. Эти символы затем преобразуются в байты и в конечном итоге оказываются в файле employee.txt. Кстати, на днях нашел интересный сайт про казино. Подробное описание найдете по ссылке.
Метод println добавляет к ним символ конца строки, являющийся корректным для целевой системы(для Windows это «\r\n», а для Unix — «\n»). А получается этот символ конца строки за счет вызова System.getProperty(«line.separator»).
Если для записывателя устанавливается режим автоматической очистки буфера(autoflush), тогда при каждом вызове метода println все содержащиеся в буфере в этот момент символы отправляются в их пункт назначения. (Классы PrintWriter всегда снабжаются буфером). По умолчанию режим автоматической очистки не включается. Включать и отключать его можно путем использовании конструктора PrintWriter(Writer out, boolean autoFlush):
1 |
PrintWriter out = new PrintWriter(new FileWriter("employee.txt"), true); // автоматическая очистка (autoflush) |
Методы print не выдают исключений. Для проверки того, не случилось ли чего с потоком, можно вызывать метод checkError.