Зачем нужен PrintWriter? - PullRequest
7 голосов
/ 23 апреля 2011

Я действительно озадачен назначением различных классов io, например, если у нас есть BufferedWriter, зачем нам PrintWriter?

BufferedReader reader = new BufferedReader(new FileReader(file));
String line = null;      
while(s=br.readline()!=null) {
      PrintWriter fs = new PrintWriter(new FileWriter(file));
      fs.println(s);
}

если BufferedWriter не может помочь? Я просто не понимаю разницу между этими классами, кто-то может мне объяснить?

Ответы [ 3 ]

7 голосов
/ 23 апреля 2011

Они не имеют ничего общего друг с другом.По правде говоря, я редко использую PrintWriter, кроме как для временного преобразования System.out.Но в любом случае.

BufferedWriter, как и BufferedReader / BufferedInputStream / BufferedOutputStream, просто украшает вложенный Writer буфером памяти (вы можете указать размер) или принимаете значение по умолчанию.Это очень полезно при записи на медленных писателей, таких как сеть или файл.(Материал записывается в память и, например, только на диск). За счет буферизации в памяти скорость значительно увеличивается - попробуйте написать код, записывающий файл размером 10 МБ, с помощью FileWriter, а затем сравните с тем же с BufferedWriterобернутый вокруг этого.

Так что BufferedWriter.Он добавляет несколько удобных методов, но в основном он просто обеспечивает этот буфер памяти.

PrintWriter в основном это простой декоратор, который добавляет некоторые специфические методы записи для различных типов, таких как String, float и т. Д., поэтому вам не нужно конвертировать все в необработанные байты.

Отредактировано:

Это уже появилось

4 голосов
/ 23 апреля 2011

PrintWriter по сути является классом удобства.Если вы хотите быстро и легко выдуть строку текста, например, в файл журнала, PrintWriter делает это очень просто.

Три функции:

  • print и println методы примут любой тип данных и выполнят преобразование за вас.Не только String.
  • Относительно новый метод format на вес золота.Теперь в Java так же просто, как в C, вывести строку текста с контролем формата в стиле C.
  • Методы никогда не выдают исключение!Некоторые программисты в ужасе от возможности никогда не слышать о том, что что-то идет не так.Но если это одноразовая программа или что-то действительно простое, удобство может быть хорошим.Особенно, если вывод на System.out или System.err, у которых есть несколько способов ошибиться.
1 голос
/ 13 июня 2014

Основная причина использования PrintWriter - получить доступ к методам printXXX (например, println (int)). По сути, вы можете использовать PrintWriter для записи в файл так же, как вы используете System.out для записи в консоль.

BufferedWriter - это эффективный способ записи в файл (или что-либо еще), поскольку он буферизует символы в памяти Java перед записью в файл.

...