[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-i-o-nio-v-chem-otlichie-klassa-printwriter-ot-printstream":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":19,"progress":20,"seo":21},668,"v-chem-otlichie-klassa-printwriter-ot-printstream",15,"i-o-nio","I\u002FO & NIO","📁","В чем отличие класса PrintWriter от PrintStream?","`PrintWriter` и `PrintStream` предоставляют похожий набор методов (`print()`, `println()`, `printf()`), но различаются по нескольким ключевым аспектам.\n\n| Характеристика | PrintStream | PrintWriter |\n|---|---|---|\n| Работает с | байтами (OutputStream) | символами (Writer) |\n| Поддержка Unicode | Ограниченная | Полная (корректная работа с символьными данными) |\n| Автоматический flush | Всегда при `println()`, `printf()`, записи `\\n` | Только если включён в конструкторе (`autoFlush = true`) |\n| Управление flush | Неявное | Явное через `flush()` или параметр конструктора |\n| Примеры использования | `System.out`, `System.err` | Запись в файлы, сетевые потоки, сервлеты |\n\n`PrintWriter` усовершенствовал работу с символами Unicode, так как основан на `Writer`, который изначально проектировался для символьных данных. `PrintStream` сохранён в языке прежде всего ради обратной совместимости (`System.out`).\n\nОба класса никогда не выбрасывают исключения при записи — для проверки ошибок необходимо вызывать метод `checkError()`. Это удобно для логирования и вывода, но может маскировать ошибки записи, если не проверять явно.\n\nВ `PrintWriter` можно явно управлять буферизацией: при выключенном `autoFlush` данные накапливаются в буфере и записываются только при вызове `flush()` или при закрытии потока, что повышает производительность при записи большого объёма данных.\n\n> **На собеседовании:** ключевые отличия — PrintWriter работает с символами и поддерживает управление flush, PrintStream работает с байтами и всегда сбрасывает буфер при `println()`. System.out — это PrintStream по историческим причинам.","","middle",[15,16,17,18],"core","outputstream","io","writer",[],null,{"title":22,"description":23,"ogTitle":24,"ogDescription":25,"keywords":26,"schemaAnswer":36,"featuredSnippetReady":37},"PrintWriter vs PrintStream в Java — Gymterview","Отличия PrintWriter от PrintStream: символьный vs байтовый, управление flush, поддержка Unicode, checkError(). Сравнительная таблица.","PrintWriter vs PrintStream — отличия — Gymterview","Сравнение PrintWriter и PrintStream: тип данных, автоматический flush, Unicode, управление буфером.",[27,28,29,30,31,32,33,34,35],"PrintWriter","PrintStream","System.out","flush","autoFlush","Unicode","checkError","Java IO","собеседование","PrintWriter работает с символами (Writer) и поддерживает полный Unicode, PrintStream — с байтами (OutputStream). PrintStream автоматически сбрасывает буфер при println(), PrintWriter позволяет управлять flush (через конструктор autoFlush или явный вызов flush()). Оба не бросают исключений при записи — ошибки проверяются через checkError(). System.out — PrintStream по историческим причинам.",true]