В чем разница между потоком и читателем в Java?
Сегодня у меня есть этот вопрос, для которого, я думаю, я ответил очень плохо. Я сказал, что поток - это данные, которые текут, а читатель - это метод, из которого мы читаем, это статические данные. Я знаю, что это ужасный ответ, поэтому, пожалуйста, предоставьте мне четкие различия и определения между этими двумя примерами на Java.
Спасибо.
Ответы
Ответ 1
Как говорили другие, варианты использования для каждого из них несколько отличаются (хотя они часто могут использоваться взаимозаменяемо)
Поскольку читатели читают символы, они лучше, когда вы имеете дело с вводом, который имеет текстовый характер (или данные, представленные как символы). Я говорю лучше, потому что читатели (в контексте типичного использования) по существу являются потоками с методами, которые легко облегчают чтение ввода символов.
Ответ 2
InputStream байт-ориентирован. Читатель ориентирован на характер.
Джавадоки - ваш друг, объясняя разницу. Reader, InputStream
Ответ 3
Поток предназначен для чтения байтов, Reader предназначен для чтения символов. Один символ может принимать один байт или больше, в зависимости от набора символов.
Ответ 4
Потоковые классы - это классы, базирующиеся на байтах, означающие все классы InputStream
(буферизованные и небуферизированные), считываемые байтом данных байтом из потока, а все OutputStream
(буферизованные и небуферизованные) классы записывают байты данных байтом к потоку. Потоковые классы полезны, когда у вас небольшие данные или вы имеете дело с двоичными файлами, например изображениями.
С другой стороны, Reader/Writer
- классы, основанные на символах. Эти классы читают или записывают один символ по времени из потока или в поток. Эти классы расширяют либо java.io.Reader
(все классы ввода символов), либо java.io.Writer
(все классы вывода символов). Эти классы полезны, если вы имеете дело с текстовым файлом или другим текстовым потоком. Эти классы также Buffered
и Non-Buffered
.