Основная идея проста.
Потоки предназначены для двоичного чтения / записи. Устройства чтения / записи предназначены для чтения / записи символов (в Java байт не является символом, поскольку символ является юникодом). Если возможно преобразовать двоичный поток в символьную последовательность, для потока имеется соответствующий считыватель.
Например, FileInputStream extends InputStream
это двоичный файл для чтения. Если это текстовый файл для чтения, вы оборачиваете этот объект в InputStreamReader extends Reader
, предоставляя набор символов. Теперь вы можете читать символы.
Если вы хотите сделать readLine()
, вам нужно обернуть этот ридер в BufferedReader
.
Аналогично с писателями.
Итак, идея заключается в том, чтобы получить новые способности.