2016-09-10 1 views
1

Wir können eine BufferedInputStream erhalten, indem wir eine FileInputStream dekorieren. Und Kanal bekam von FileInputStream.getChannel kann auch Inhalt in eine Buffer lesen.Was ist der Unterschied zwischen BufferedInputStream und java.nio.Buffer?

Also, was ist der Unterschied zwischen BufferedInputStream und java.nio.Buffer? d. h. wann sollte ich BufferedInputStream verwenden und wann sollte ich java.nio.Buffer und java.nio.Channel verwenden?

+3

Sie sind zwei völlig verschiedene Dinge, die zufällig das Wort "Buffer" in ihren Namen haben. Ein 'BufferedInputStream' ist ein' InputStream' und hält sich an diese API. Und ein "Puffer" ist ein zugänglicher Datenpuffer. Haben Sie einen praktischen Grund diese Frage zu stellen? In diesem Fall ist es viel fruchtbarer, das eigentliche Problem zu benennen, als eine sehr unklare Frage zu stellen. –

+0

Können Sie erklären, warum 'sie zwei völlig unterschiedliche Dinge sind'? Ich möchte nur eine Ressource bekommen, um das Prinzip von "BufferedInputStream" und "java.nio.Buffer" zu lernen. – expoter

+2

Javadoc: [BufferedInputStream] (https://docs.oracle.com/javase/8/docs/api/java/io/BufferedInputStream.html) und [Buffer] (https://docs.oracle.com/javase/ 8/docs/api/java/nio/Puffer.html). Es gibt keinen Grund, warum Dinge nichts miteinander zu tun haben - es gibt nur Gründe dafür, dass Dinge miteinander verwandt sind. –

Antwort

0

Diese Klassen wurden für verschiedene Pakete zu unterschiedlichen Zeiten geschrieben.

Wenn Sie mit Klassen im Paket java.io arbeiten, verwenden Sie BufferedInputStream.

Wenn Sie java.nio verwenden, verwenden Sie den ByteBuffer.

Wenn Sie beide nicht verwenden, können Sie ein einfaches Byte [] verwenden. ByteBuffer hat einige nützliche Methoden um mit Primitiven zu arbeiten, also könntest du es benutzen.

Es ist unwahrscheinlich, dass es zu Verwechslungen kommt, weil Sie im Allgemeinen nur eines verwenden, wenn Sie müssen und in diesem Fall wird nur eines kompiliert, wenn Sie dies tun.

Verwandte Themen