Подтвердить что ты не робот

Разница `InputStream`` DataInputStream` и `BufferedInputStream` в java?

Разница InputStream DataInputStream и BufferedInputStream в java?

4b9b3361

Ответ 1

Если возникает вопрос: "какая разница между этими классами", вот резюме, но прочитайте javadoc для получения дополнительной информации:

Входной поток - это базовый класс для чтения байтов из потока (сети или файла). Он обеспечивает возможность считывать байты из потока и обнаруживать конец потока.

DataInputStream - это тип InputStream для непосредственного чтения данных как примитивных типов данных.

BufferedInputStream - это тип inputStream, который считывает данные из потока и использует буфер для оптимизации доступа к скорости доступа к данным. данные в основном считываются заранее, и это уменьшает доступ к диску или сети.

Ответ 2

Я думаю, что вы задаете разницу, поэтому я даю некоторые детали

Input Stream means: этот абстрактный класс является суперклассом всех классов, представляющих входной поток байтов. Приложения, которые должны определять подкласс InputStream, должны всегда предоставлять метод, который возвращает следующий байт ввода.

DataInputStream: поток ввода данных позволяет приложению считывать примитивные типы данных Java из базового входного потока машинно-независимым способом. Приложение использует выходной поток данных для записи данных, которые впоследствии могут быть прочитаны потоком ввода данных.

Для получения дополнительной информации используйте эту ссылку http://docs.oracle.com/javase/6/docs/api/java/io/DataInputStream.html

BufferedInputStream: BufferedInputStream добавляет функциональность другому входному потоку, а именно: возможность буферизации ввода и поддержки меток и методов reset. Когда BufferedInputStream создается, создается внутренний буферный массив. Поскольку байты из потока считываются или пропускаются, внутренний буфер пополняется по мере необходимости из содержащегося входного потока, по одному байту за один раз.

Ответ 3

Вы можете протестировать различные реализации InputStream с помощью оператора instanceof:

InputStream in = ...
if (in instanceof DataInputStream) {
  // we have an DataInputStream instance
} else if (in instanceof BufferedInputStream) {
  // we have an BufferedInputStream instance
}