2016-09-10 2 views
1

Мы можем получить BufferedInputStream, украсив FileInputStream. И канал, полученный от FileInputStream.getChannel, также может читать содержимое в Buffer.В чем разница между BufferedInputStream и java.nio.Buffer?

Итак, В чем разница между BufferedInputStream и java.nio.Buffer? то есть, когда следует использовать BufferedInputStream и когда следует использовать java.nio.Buffer и java.nio.Channel?

+3

Это две совершенно разные вещи, которые имеют слово «Буфер» в их именах. «BufferedInputStream» - это «InputStream» и придерживается этого API. И «Буфер» - это доступный буфер данных. У вас есть практическая причина задавать этот вопрос? В этом случае гораздо более плодотворно сформулировать фактическую проблему, чем у вас, чем задавать очень неясный вопрос. –

+0

Не могли бы вы объяснить, почему «Они две совершенно разные вещи»? Я просто хочу получить некоторый ресурс, чтобы узнать принцип «BufferedInputStream» и «java.nio.Buffer». – expoter

+2

Javadoc: [BufferedInputStream] (https://docs.oracle.com/javase/8/docs/api/java/io/BufferedInputStream.html) и [Буфер] (https://docs.oracle.com/javase/ 8/документы/API/Java/NiO/Buffer.html). Нет причин, по которым вещи не связаны друг с другом - есть только причины для того, чтобы вещи были связаны. –

ответ

0

Эти классы, написанные в разное время для разных пакетов.

Если вы работаете с классами в пакете java.io, используйте BufferedInputStream.

Если вы используете java.nio, используйте ByteBuffer.

Если вы не используете, вы можете использовать простой байт []. ByteBuffer имеет несколько полезных методов для работы с примитивами, поэтому вы можете использовать его для этого.

Вряд ли будет какая-либо путаница, потому что в общем случае вы будете использовать ее только тогда, когда вам нужно, и в этом случае только один будет скомпилирован, когда вы это сделаете.

Смежные вопросы