Предположительно, они используют FileWriter
, потому что хотят записать в файл. И BufferedWriter
, и PrintWriter
должны быть наделены другим записывающим устройством для записи — вам нужен какой-то конечный пункт назначения.
(Лично мне не нравится FileWriter
, так как он не позволяет указать кодировку. Я предпочитаю использовать FileOutputStream
, обернутый в OutputStreamWriter
, но это другое дело.)
BufferedWriter
используется для буферизации, как вы говорите, хотя он не буферизует все выходные данные, а только фиксированную его часть (размер буфера). Он создает «более громоздкие» записи в базовый модуль записи.
Что касается использования PrintWriter
- ну, это раскрывает некоторые дополнительные методы, такие как println
. Лично мне это не нравится, так как оно поглощает исключения (вы должны явно проверить с помощью checkError
, который по-прежнему не дает подробностей и который, я не думаю, что никогда не видел), но опять же это зависит от того, что вы делаете. PrintWriter
передается BufferedWriter
как его место назначения.
Таким образом, код под показанным вами разделом, предположительно, будет записывать в PrintWriter
, который будет записывать в BufferedWriter
, который (когда его буфер заполнен, очищен или закрыт) запишет в FileWriter
, который, в свою очередь, преобразует символьные данные в байты на диске.
person
Jon Skeet
schedule
04.04.2013