1

writer今、私はそれらのストリーム (入力/出力) と通常のandreaderまたはscannerandの違いを理解していないようですformatter...

そして、なぜandのInputStreamような多くのサブクラスがDataInputStreamありBufferedInputStream、そのすべてが混乱しているのですか(そしてOutputStreamもちろん同じです)...

最後にもう1つ、バッファがそれほど優れていて(だから読んだ)効率的である場合、なぜ他の入出力方法を使用するのでしょうか(なぜそれらが作成されたのですか?)

4

1 に答える 1

5

ストリームはバイトの読み取り/書き込み を行い、リーダー文字データの読み取りと書き込みを行います。その下には常に I/O を行うときにバイトがあるため、これはリーダーとライターがバイトを文字に変換する追加のステップを実行することを意味します。

ストリームだけでなく、さまざまなサブクラスを備えた、両方のケース (先ほどリンクしたもの) 用の抽象スーパークラスがあります。

バッファは、処理する前にデータのチャンクを収集する場合に適しています。正当な理由の 1 つは、たとえば、各バイト/文字を個別に読み書きするよりも、データのチャンクを一度に読み書きする方が、ディスク アクセスがより効率的であることです。しかしもちろん、I/O を実行したい状況はたくさんあります。1 つのサイズですべてに対応できるわけではないため、これらのさまざまな状況に合わせて調整されたさまざまなクラスがあります。

バッファリングされたバージョンが作成された理由は、オブジェクト指向プログラミングの基本原則にあります。機能を分離することにより、メカニズム/設計の複雑さを軽減すると同時に、上記のように、可能なアプリケーションの範囲を広げます。

于 2015-08-24T15:18:16.603 に答える