Разница между InputStream.read (byte b) и BufferedInputStream в Java - PullRequest
0 голосов
/ 29 декабря 2018

Я только что увидел, что класс InputStream ( ссылка на Java 11 API ) имеет метод read(byte[] b) для чтения потока данных в байтовом выражении.Разве это не «буферизованное чтение»?

Далее я увидел, что BufferedInputStream ( ссылка на API Java 11) не имеет собственной реализации read(byte[] b),Он использует метод своего родительского класса FilterInputStream.

Итак, класс InputStream также поддерживает буферизованное чтение ?!И где разница с классом BufferedInputStream?

Спасибо за вашу помощь!

edit: исправлено "read(byte b)" в "read(byte[] b)".

1 Ответ

0 голосов
/ 29 декабря 2018

Я предполагаю, что вы имеете в виду byte[] b, а не byte b.

Согласно Javadoc, реализация по умолчанию для read(byte[] b) просто вызывает read(b, 0, b.length).Поскольку этот метод переопределяется в BufferedInputStream, вы можете сказать, что read(byte[] b) для всех намерений и целей также переопределяется.

Дополнительная функциональность, предоставляемая BufferedInputStream, заключается в поддержке markи reset методы, которые позволяют эффективно создавать закладки в потоке и перечитывать их из этой закладки.Буфер поддерживает байты, необходимые для поддержки этой операции.В противном случае он будет просто читать то, что доступно в то время, без какой-либо буферизации.

...