PrintStream является байтовым потоком (OutputStream), предназначенным для записи в байты, тогда как PrintWriter является символьным потоком (Writer), предназначенным для записи в символы. PrintStream автоматически преобразует символы в байты на основе кодировки по умолчанию, PrintWriter использует указанную или по умолчанию кодировку для преобразования символов в байты. PrintStream не генерирует исключения IOException при возникновении ошибок ввода/вывода (вместо этого устанавливает флаг ошибки), PrintWriter генерирует IOException.
Основные отличия:
| Характеристика | PrintStream | PrintWriter |
|---|---|---|
| Тип потока | Байтовый (OutputStream) | Символьный (Writer) |
| Ввод/вывод | Байты | Символы |
| Обработка ошибок | Не генерирует IOException, устанавливает флаг ошибки | Генерирует IOException |
| Кодировка | Использует кодировку по умолчанию | Можно указать кодировку |
| Назначение | Работа с байтовыми данными | Работа с текстовыми данными |