2016-04-02 37 views

Antwort

0

Manchmal können Sie es sich nicht leisten, einen Eingangspuffer zu reservieren (sehr eingeschränkter Speicher), so dass Sie Byte für Byte verarbeiten.

Alles, was BufferedInputStream wirklich tut, ist es verwaltet einen byte[] Puffer für Sie und ruft read(byte[]) hinter den Kulissen. Sie können dann read() Byte für Byte aufrufen, ohne sich um den Systemaufwand kümmern zu müssen.

Wenn Sie nur N Bytes lesen und speichern möchten, ist die Zuweisung eines byte[N] und die Übergabe an read(byte[]) völlig in Ordnung.

+0

Manchmal? Beispiel? und 'read (byte [])' und 'BufferedInputStream' sind gleich? 'Sie können dann read() ein Byte nach dem anderen aufrufen, ohne sich um den Overhead von Systemaufrufen kümmern zu müssen. Können Sie das bitte erklären? Wie? – UnKnown

0

Das ist etwas, was ich vor einiger Zeit in Erwägung gezogen habe und die Entscheidungen, die ich getroffen habe, könnten Ihnen behilflich sein. Also, hier sind meine 2 Cent.

In bestimmten Fällen sagen Sie, dass Sie eine Million Byte Daten einlesen möchten. Das Übergeben eines Arrays dieser Bytes würde eine sequentielle Zuweisung von einer Million Bytes erfordern. Dies kann in eingeschränkten Umgebungen ziemlich problematisch sein. Sie würden besser Byte für Byte lesen und dann basierend auf den Anforderungen verarbeiten.

BufferedInputStream, ByteBuffer und die Art, einfach helfen Sie den Zugriff auf die Byte-Array in einer einfacheren und stromlinienförmiger gestalten.