Java IO: PrintWriter
The Java PrintWriter class ( java.io.PrintWriter ) enables you to write formatted data to an underlying Writer . For instance, writing int , long and other primitive data formatted as text, rather than as their byte values.
The Java PrintWriter is useful if you are generating reports (or similar) where you have to mix text and numbers. The PrintWriter class has all the same methods as the PrintStream except for the methods to write raw bytes. Being a Writer subclass the PrintWriter is intended to write text.
PrintWriter Example
Here is a simple Java PrintWriter example:
FileWriter writer = new FileWriter("d:\\data\\report.txt"); PrintWriter printWriter = new PrintWriter(writer); printWriter.print(true); printWriter.print((int) 123); printWriter.print((float) 123.456); printWriter.printf(Locale.UK, "Text + data: %1$", 123); printWriter.close();
This example first creates a PrintWriter instance which is connected to a FileWriter . Second, the example writes a boolean , an int and a float to the PrintWriter . Third, the example calls the advanced printf() method of the PrintWriter which can insert formatted numbers into a text string. Finally the PrintWriter is closed.
PrintWriter Constructors
The PrintWriter has a wide selection of contructors that enable you to connect it to a File , an OutputStream , or a Writer . In that way the PrintWriter is a bit different from other Writer subclasses which tend to have mostly constructors that can take other Writer instances as parameters (except for a few, like OutputStreamWriter ).
print() and format()
The Java PrintWriter class contains the powerful format() and printf() methods. The two methods do exactly the same, but the name «printf» is more familiar to C-programmers. The format() and printf() methods allow you to mix text and data in very advanced ways, using a formatting string. For more information about format() and printf() see this page:
Closing a PrintWriter
When you are finished writing characters to the Java PrintWriter you should remember to close it. Closing a PrintWriter will also close the Writer instance to which the PrintWriter is writing.
Closing a PrintWriter is done by calling its close() method. Here is how closing a PrintWriter looks:
You can also use the try-with-resources construct introduced in Java 7. Here is how to use and close a PrintWriter looks with the try-with-resources construct:
FileWriter writer = new FileWriter(«data/report.txt»); try(PrintWriter printWriter = new PrintWriter(writer))
Notice how there is no longer any explicit close() method call. The try-with-resources construct takes care of that.
Notice also that the first FileWriter instance is not created inside the try-with-resources block. That means that the try-with-resources block will not automatically close this FileWriter instance. However, when the PrintWriter is closed it will also close the OutputStream instance it writes to, so the FileWriter instance will get closed when the PrintWriter is closed.
New java io printwriter
Prints formatted representations of objects to a text-output stream. This class implements all of the print methods found in PrintStream . It does not contain methods for writing raw bytes, for which a program should use unencoded byte streams. Unlike the PrintStream class, if automatic flushing is enabled it will be done only when one of the println , printf , or format methods is invoked, rather than whenever a newline character happens to be output. These methods use the platform’s own notion of line separator rather than the newline character. Methods in this class never throw I/O exceptions, although some of its constructors may. The client may inquire as to whether any errors have occurred by invoking checkError() . This class always replaces malformed and unmappable character sequences with the charset’s default replacement string. The CharsetEncoder class should be used when more control over the encoding process is required.
Field Summary
Fields declared in class java.io.Writer
Constructor Summary
Creates a new PrintWriter, without automatic line flushing, with the specified file name and charset.
Creates a new PrintWriter, without automatic line flushing, with the specified file name and charset.
Method Summary
A convenience method to write a formatted string to this writer using the specified format string and arguments.
A convenience method to write a formatted string to this writer using the specified format string and arguments.
PrintWriter в Java
Реализация класса Writer в Java – это класс PrintWriter. Отформатированное представление объектов выводится в поток вывода текста.
Что такое PrintWriter в Java?
Класс Java.io.PrintWriter печатает отформатированные представления объектов в поток вывода текста. Этот класс реализует все методы печати, которые находятся в printstream.
С этим простым определением показажу вам объявление класса.
public class PrintWriter extends Writer
Этот класс наследует методы из следующего класса – Java.io.Object.
Конструкторы
Ниже приведен список конструкторов класса PrintWriter:
Конструктор | Описание |
PrintWriter(File file, String csn) | Помогает в создании нового PrintWriter без автоматической очистки строки. Он создает его с указанным файлом и набором символов. |
PrintWriter(OutputStream out, boolean autoFlush) | Помогает в создании нового PrintWriter из уже существующего выходного потока. |
PrintWriter(OutputStream out) | Помогает в создании нового PrintWriter из существующего OutputStream. |
PrintWriter(String fileName, String csn) | Помогает в создании нового PrintWriter, в котором указаны имя файла и кодировка. |
PrintWriter(String fileName) | Создает новый PrintWriter с указанным именем файла без автоматической очистки строки. |
PrintWriter(Writer out) | Создает новый PrintWriter без автоматической очистки строки. |
PrintWriter(Writer out, boolean autoFlush) | Создает новый PrintWriter. |
PrintWriter(File file) | Создает новый PrintWriter, без автоматической очистки строки, с указанным файлом. |
Методы
Метод | Описание |
PrintWriter append(CharSequence csq) | Помогает в добавлении указанной последовательности символов к этому автору. |
PrintWriter append(CharSequence csq, int start, int end) | Помогает в добавлении подпоследовательности указанной последовательности символов к этому автору. |
void close() | Закрывает поток. |
boolean checkError() | Закрывает поток, если он не закрыт, и проверяет состояние ошибки. |
protected void clearError() | Очищает состояние ошибки этого потока. |
void flush() | Очищает поток. |
PrintWriter format(String format, Object… args) | Записывает отформатированную строку в этот модуль записи, используя указанную строку формата и аргументы. |
PrintWriter format(Locale l, String format, Object… args) | Записывает отформатированную строку в этот модуль записи, используя указанную строку формата и аргументы. |
void print(char c) | Печатает символ. |
void print(float f) | Печатает число с плавающей точкой. |
void print(double d) | Печатает число с плавающей точкой двойной точности. |
void print(boolean b) | Печатает логическое значение. |
void print(int i) | Печатает целое число. |
void print(long l) | Печатает длинное целое число. |
void print(Object obj) | Печатает объект. |
void print(String s) | Печатает строку. |
void println() | Завершает текущую строку записью строки разделителя строк. |
PrintWriter printf(String format, Object… args) | Метод для записи отформатированной строки в этот модуль записи с использованием указанной строки формата и аргументов. |
PrintWriter printf(Locale l, String format, Object… args) | Записывает отформатированную строку в этот модуль записи, используя указанную строку формата и аргументы. |
void println(boolean x) | Печатает логическое значение, а затем завершает строку. |
void println(char x) | Печатает символ, а затем завершает строку. |
void println(char[] x) | Печатает массив символов, а затем завершает строку. |
void println(double x) | Печатает число с плавающей запятой двойной точности и, следовательно, завершает строку. |
void println(long x) | Печатает длинное целое число и затем завершает строку. |
void println(int x) | Печатает целое число, а затем завершает строку. |
void println(float x) | Печатает число с плавающей запятой и затем завершает строку. |
void println(Object x) | Печатает объект, а затем завершает строку. |
void println(String x) | Печатает строку и затем завершает строку. |
void write(char[] buf) | Записывает массив символов. |
void write(char[] buf, int off, int len) | Записывает часть массива символов. |
protected void setError() | Указывает на то, что произошла ошибка. |
void write(int c) | Пишет один символ. |
void write(String s) | Пишет строку. |
Теперь давайте перейдем к процессу реализации на примере.
import java.io.File; import java.io.PrintWriter; public class Example < public static void main(String[] args) throws Exception < //Data to write on Console using PrintWriter PrintWriter writer = new PrintWriter(System.out); writer.write("Welcome to Edureka!"); writer.flush(); writer.close(); //Data to write in File using PrintWriter PrintWriter writer1 =null; writer1 = new PrintWriter(new File("D:testout.txt")); writer1.write("Learn different technologies."); writer1.flush(); writer1.close(); >>
Вывод: Learn different technologies.