Если вы действительно хотите сравнить FileWriter
с BufferedOutputStream
для записи текстового файла, последний должен быть быстрее, так как там меньше операций ввода-вывода.
- В случае
FileWriter
каждый вызов метода записи будет сохранен сразу (он не буферизуется).
- В случае
BufferedOutputStream
данные будут записаны на диск, если буфер заполнен (или буфер явно сброшен с помощью метода flush
).
Но если вы пишете текстовые файлы, вы должны использовать Writer
; в этом случае мы можем сравнить FileWriter
с BufferedWriter
:
Смотря на
FileWriter fw = new FileWriter(...)
и
BufferedWriter bw = new BufferedWriter(new FileWriter(...)
у вас такая же ситуация с количеством операций ввода-вывода.
FileWriter
использует FileOutputStream
внутри. Причина использования FileWriter
заключается в том, что он автоматически использует кодировку символов по умолчанию, когда вы записываете в файл (например, внутренняя строка Java кодируется в UTF-8). Если вы используете OutputStream
, вам придется кодировать вручную при каждой записи:
Итак, этот пример для BufferedWriter
:
bw.write("Hello");
соответствует этому примеру для BufferedOutputStream
:
bos.write("Hello".getBytes(Charset.forName("utf-8")));
если ваша кодировка по умолчанию utf-8
.
OutputStream
имеет дело с (необработанными) байтами, тогда как Writer
имеет дело с (текстовыми) символами.
person
Beryllium
schedule
08.07.2013