Запись в файл: разница между потоком и записывающим устройством
Привет у меня есть немного путаницы о потоке, чтобы использовать для записи в текстовом файле
Я видел несколько примеров:
один использовать поток PrintWriter
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(fname)));
out.println(/*something to write*/);
out.close();
вместо этого используйте:
PrintStream out = new PrintStream(new FileOutputStream(fname));
out.println(/*something to write*/)
но какая разница? оба пишут в файл с одинаковым результатом?
3 ответа
PrintWriter
является новым с Java 1.1; это более способно, чем PrintStream
учебный класс. Вы должны использовать PrintWriter
вместо PrintStream
потому что он использует схему кодирования по умолчанию для преобразования символов в байты для базового OutputStream
, Конструкторы для PrintStream
устарели в Java 1.1. Фактически весь класс, вероятно, был бы устаревшим, за исключением того, что он генерировал бы много предупреждений компиляции для кода, который использует System.out
а также System.err
,
PrintWriter
для написания текста, тогда как PrintStream
для записи данных - необработанные байты. PrintWriter
может изменить кодировку байтов, чтобы упростить обработку текста, что может повредить ваши данные.
PrintWriter
расширяет класс Writer
класс думал написать персонажей, в то время как PrintStream
инвентарь OutputStream
интерфейс для более общих выводов.