В чем разница между Reader и InputStream в Java
InputStreams используются для чтения байтов из потока. Он захватывает байты данных байтом без какого-либо перевода. Поэтому они полезны для двоичных данных, таких как изображения, видео и сериализованные объекты.
С другой стороны, читатели представляют собой потоки символов, поэтому их лучше всего использовать для чтения символьных данных. Если информация, которую вы читаете, является всем текстом, то Reader позаботится о расшифровке символов для вас и даст вам символы Unicode из исходного входного потока. Если вы читаете какой-либо текст,
это поток для использования.
Класс файла Java
Библиотеки ввода / вывода Java (I / O) разработаны абстрактным образом, что позволяет вам читать из внешнего источника источников данных и записывать внешние объекты, независимо от того, что вы пишете или читаете. Когда вы работаете с файлами для ввода-вывода, вы в основном работаете с потоками.
Источник: http://net-informations.com/Java/cJava/reader.htm