В зависимости от того, сколько операций ввода-вывода вы будете выполнять, использование буфера может иметь множество преимуществ.В идеале, вы должны ограничить количество обращений к вашему входному источнику и читать байты как куски.
Представьте себе ведро с 10 камешками, и вы хотите переместить их в другое ведро.Вы можете взять горсть камешков и просто переместить их.Вам не нужно идти, чтобы взять лопату, это слишком много.Но если в ведре тысячи гальки, вам понадобится лопата, и стоит приложить усилия, чтобы получить лопату (в этой аналогии буфер - лопата) ... Мораль этой истории в том, что выследует использовать буфер, когда вы собираетесь делать много обращений к источнику данных.
Эта статья может объяснить это лучше и более подробно ... http://pzemtsov.github.io/2015/01/19/on-the-benefits-of-stream-buffering-in-Java.html
Вот ссылка на сайт Oracle, объясняющий, как работает класс PrintWriter.https://docs.oracle.com/javase/7/docs/api/java/io/PrintWriter.html
Вот рабочий пример ... Вы можете использовать класс PrintWriter для записи в консоль, если вы создаете объект с помощью System.in.Не забудьте также передать значение «true», чтобы оно автоматически очищалось.
import java.io.*;
public class PrintWriterExample
{
public static void main(String args[]) throws IOException
{
int [] id = {12456, 323, 345, 3423};
String [] firstName = {"John", "Paul", "George", "Ringo"};
String [] lastName = {"Lennon", "McCartney", "Harrison", "Star"};
PrintWriter outFile = new PrintWriter(System.out, true);
String format = "ID: %5d (%s, %s)\n";
for (int i=0; i<id.length; i++)
{
outFile.printf(format, id[i], firstName[i], lastName[i]);
}
}
}
Вот вывод:
ID: 12456 (John, Lennon)
ID: 323 (Paul, McCartney)
ID: 345 (George, Harrison)
ID: 3423 (Ringo, Star)