запись в файл: разница между потоком и записывающим устройством - PullRequest
2 голосов
/ 11 декабря 2011

Привет, у меня возникла путаница с потоком, который нужно использовать для записи в текстовый файл

Я видел пример:

одно использование потока 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 ]

1 голос
/ 11 декабря 2011

PrintWriter для записи текста, тогда как PrintStream для записи данных - необработанных байтов.PrintWriter может изменить кодировку байтов, чтобы упростить обработку текста, что может повредить ваши данные.

1 голос
/ 12 декабря 2011

PrintWriter является новым с Java 1.1;он более способен, чем класс PrintStream.Вы должны использовать PrintWriter вместо PrintStream, потому что он использует схему кодирования по умолчанию для преобразования символов в байты для базового OutputStream.Конструкторы для PrintStream устарели в Java 1.1.Фактически весь класс, вероятно, был бы устаревшим, за исключением того, что он генерировал бы много предупреждений компиляции для кода, который использует System.out и System.err.

0 голосов
/ 11 декабря 2011

PrintWriter расширяет класс Writer, класс, предназначенный для записи символов, в то время как PrintStream реализует OutputStream, интерфейс для более общих выходных данных.

...