Подтвердить что ты не робот

Какая разница между Printwriter и OutputStream

Во-первых, у нас есть PrintWriter

java.io.File f=new java.io.File("s.txt");

   java.io.PrintWriter out=new java.io.PrintWriter(f);

   out.print(5);

   out.print(7);

   out.close();

Тогда мы имеем выходной поток

 java.io.File f=new java.io.File("s.txt");

 java.io.FileOutputStream out=new java.io.FileOutputStream(f);

   out.write(5);

   out.write(7);

   out.close();

В чем разница?

4b9b3361

Ответ 1

OutputStreams предназначены для двоичных данных. Писатели (включая PrintWriter) предназначены для текстовых данных.

Вы не можете видеть разницу в вашей конкретной ситуации, когда вы вызываете PrintWriter.write(int), который пишет один символ - если кодировка символов, которую вы используете, только отображает символы в один и тот же байт, для символов менее 127, тогда вы увидите тот же результат. Но если вы дадите ему другую кодировку, вы увидите разницу.

PrintWriter также отличается тем, что он подавляет исключения IO - как и PrintStream, который эквивалентен двоичному потоку PrintWriter.

Ответ 2

Из этой java2novice.com ссылка Я извлек следующее, похожее на то, что сказал Джон:

ServletOutputStream: ServletResponse.getOutputStream() returns a ServletOutputStream      подходит для записи двоичных данных в ответ. Сервлет       контейнер не кодирует двоичные данные, он отправляет необработанные данные       как есть.

PrintWriter: ServletResponse.getWriter() возвращает объект PrintWriter, который отправляет       текстовый текст клиенту. PrintWriter использует символ       кодировка возвращается getCharacterEncoding(). Если ответ       кодировка символов не указана, тогда она по умолчанию       кодирование символов.