В чем разница между потоком и читателем в Java?

Сегодня у меня есть этот вопрос, для которого, я думаю, я ответил очень плохо. Я сказал, что поток - это данные, которые текут, а читатель - это метод, из которого мы читаем, это статические данные. Я знаю, что это ужасный ответ, поэтому, пожалуйста, предоставьте мне четкие различия и определения между этими двумя примерами на Java.

Спасибо.

Ответы

Ответ 1

Как говорили другие, варианты использования для каждого из них несколько отличаются (хотя они часто могут использоваться взаимозаменяемо)

Поскольку читатели читают символы, они лучше, когда вы имеете дело с вводом, который имеет текстовый характер (или данные, представленные как символы). Я говорю лучше, потому что читатели (в контексте типичного использования) по существу являются потоками с методами, которые легко облегчают чтение ввода символов.

Ответ 2

InputStream байт-ориентирован. Читатель ориентирован на характер.

Джавадоки - ваш друг, объясняя разницу. Reader, InputStream

Ответ 3

Поток предназначен для чтения байтов, Reader предназначен для чтения символов. Один символ может принимать один байт или больше, в зависимости от набора символов.

Ответ 4

Потоковые классы - это классы, базирующиеся на байтах, означающие все классы InputStream (буферизованные и небуферизированные), считываемые байтом данных байтом из потока, а все OutputStream (буферизованные и небуферизованные) классы записывают байты данных байтом к потоку. Потоковые классы полезны, когда у вас небольшие данные или вы имеете дело с двоичными файлами, например изображениями.

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