8
JavaおよびC#には、ストリームをバッファリングするためのクラスがいくつかあります。 BufferedStream
(C#、Buffered(Input|Output)Stream
およびBuffered(Reader|Writer)
)です。バッファリングされたストリームの仕組みは?
コンストラクタでストリームを取得し、同じインターフェイスを実装します。
質問は - どのように動作するのですか?
1バイトを読み込もうとしたらどうなりますか?それは、内部バッファに多くのバイトを読み込んだ後、それをバイト後に私に返しますか? 1バイトの書き込み時?内側のバッファに書き込み、flush()
で内部ストリームに書き込みますか?
バイトの配列の読み書きについて - バッファ内のストリームでそれを行うのは効率的ではありませんか?
バッファリングされたストリームは、大量のバイトを読み込み、バッファに読み込むことを考えずにバイトをバイトごとに読み込みたい場合に便利です。私のバッファにバイトの配列を手動で読み込みたいのであれば、無駄です。 – VorobeY1326
バッファ付きストリームは、データソースに要求オーバーヘッドがあり、要求数を制限したい場合に便利です。ハードドライブは完全に回転するのに約1/120秒かかるので、文字単位で120文字を検索すると、最悪の場合は1秒かかることがあります。しかし、すべての120文字を一度に取得する場合は、1回の回転で行うことができます。確かに、独自のバッファを作成することはできますが、なぜホイールを再構築するのでしょうか? –
.NETのFileStreamは、すでにハードディスクで使用するために十分にバッファされていることに注意してください。ソケットからTCPパケットを読み取っているのであれば、 'BufferedStream'が必要です。 –