java - bufferedinputstream也需要指定一个数组长度呀?并没有什么用呀?
PHP中文网
PHP中文网 2017-04-17 17:48:10
0
3
713

他与fileinputstream 的区别是什么呀?他不是自带缓冲区吗?为什么还需要指定一个byte数组?

PHP中文网
PHP中文网

认证0级讲师

全員に返信(3)
阿神

そのキャッシュとあなた自身のキャッシュは同じ概念ではありません。一般的なプロセスは次のとおりです。

キャッシュせずに inputstream を使用する場合

読み取るたびに、システムは読み取り操作を実行してデータを読み取ります。読み取るバイトを指定すると 1 バイトが読み取られ、配列を指定すると配列が読み取られます。プログラムとデータの違い 読み込み効率には大きな関係があります。

を使用すると、次のようになります bufferedinputstream

を作成すると、bufferedinputstream すぐにデータを読み取り、jvm によって管理されるメモリに配置されます。 読み取るたびに、
再度そこに移動することはありません。システムで読み込むときは、メモリ 内のデータを読み取り、メモリに十分なデータが残っているかどうかを判断し、そうでない場合は、バイトを読み取っているかどうかをシステムに指示します。またはアレイの場合、システムはハードドライブを操作できない可能性があります。
プログラムとデータ読み取り効率との相関関係は非常に小さいです。

別の角度から考えてみましょう。

バッファなしでストリームを使用し、ファイルを開いてすぐに閉じると、システム
はデータ呼び出しを行わず、クローズはすぐに実行されました。 また、バッファリングされたストリームを使用してファイルを開く場合、読み取りを行わずにすぐに閉じたとしても、クローズはすぐには実行されず、システム
はすでにデータの一部をメモリに読み取っています 、バッファなしで使用する場合よりも効率が低くなります。

もちろん、ストリームを作成して、それを読まずに閉じるほど退屈する人はいないでしょう?

いいねを押す +0
PHPzhong

バッファリングと、コンテンツを受信するための配列の使用の間には関係はありません。バッファリングを使用する場合、コンテンツを受信するために配列が必要ないという意味ではありません。

いいねを押す +0
Peter_Zhu

この byte[] を再​​利用したいと考えているため、そうしないと、大規模なデータ ストリーム IO 送信に直面したときに、YGC が非常に満足することがわかります

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート