Классы Stream - это классы, ориентированные на байты, которые означают, что все InputStream
классы (буферизованные и небуферизованные) считывают байты данных по байтам из потока, а все OutputStream
(буферизованные и небуферизованные) классы записывают байты данных байтом к потоку. Потоковые классы полезны, когда у вас небольшие данные или вы имеете дело с двоичными файлами, например изображениями.
С другой стороны, Reader/Writer
- классы, основанные на символах. Эти классы читают или записывают один символ по времени из потока или в поток. Эти классы расширяются либо java.io.Reader
(все классы ввода символов), либо java.io.Writer
(все классы вывода символов). Эти классы полезны, если вы имеете дело с текстовым файлом или другим текстовым потоком. Эти классы также Buffered
и Non-Buffered
.