Java.ioは、アダプターモードの装飾モードなどの設計パターンを使用して、文字ストリームのソケットと出力と出力の問題を解決します。
バイトストリームは一度に1つのバイトしか処理できず、データの操作を容易にするために、ソケットストリームが追加されます。
問題の紹介:
バッファーストリームが通常のファイルバイトストリームよりも効率的であるのはなぜですか?
バッファリングなしで操作の場合、バイト読み取りごとに1つのバイトを記述する必要があります。
ディスクを含むIO操作はメモリ操作よりもはるかに遅いため、バッファリングなしのストリームは非常に非効率的です。
バッファを備えたストリームは、一度に多くのバイトを読み取ることができますが、ディスクに書き込むことはありませんが、最初にメモリに配置されます。
十分なバッファサイズがある場合は、一度にディスクに書き込みます。この方法では、ディスク操作の数を減らすことができ、速度ははるかに高くなります!
これが2つの違いです。
おそらくプロセス:
キャッシュ領域がない場合は、読むたびにIO操作が送信されます。
キャッシュ領域があります。初めて読むと、Xバイトが読み取り、キャッシュ領域に入れられます。その後、後続の読み取りはキャッシュから読み取りされます。キャッシュ領域の端まで読み取ると、xバイトが再度読み取られ、キャッシュ領域に配置されます。
2番目の方法がIO操作を削減し、より効率的になることは明らかです。欠点は、より多くのメモリを消費することです。
Java入力および出力ストリームは、多層カプセル化を使用して設計されています
最低レベルの入力ストリームとoutputStreamは、バイトストリームに基づいており、キャッシュメカニズムがありません。それらは通常、BufferinputStreamおよびBufferOutputStreamによって使用された後にカプセル化され、使用されます。
BufferinputStreamの読み取り方法は、スレッドをブロックします。 bufferinputStream.read(buf)は、戻る前にすべての入力ストリームをBUFに読み取ります。
BufferOutputStream.write(buf); BUFの内容を出力ストリームに出力しますが、フラッシュすることを忘れないでください。
また、自動的に更新できる比較的使いやすいPrintStreamとPrintwriterもありますが、バイトストリームの場合もあります。
バイトストリームは、通常、バイナリファイルやその他の文字ストリームを転送するために使用されます。彼らはしばしば読者で包まれています。
最も一般的に使用されるものは、BufferinputStreamReaderとPrintWrinterです。 BufferinputStreamReaderのReadLineメソッドは非常に実用的であり、 /R /Dに遭遇すると自動的にフラッシュします。
PrintWrinter Constructorで更新プロパティがTRUEに設定されている限り、PrintLNメソッドはフラッシュせずに自動的に更新できます。
FilterInputStreamおよびFilterOutputStream:フィルターフロー、バッファーフロー、データフローは両方ともここから継承されます。
バッファーストリームの場合、データはバッファーがいっぱいの場合にのみ出力ストリームに真に転送されますが、Flush()メソッドを使用して、未使用のバッファーから人為的にデータを送信できます。ファイルのエンコードメソッドを決定することはできず、ネットワークに適用することは困難です。
実際に最も一般的に使用されるのは、データストリームが送信者と受信機が同じエンコードに従って処理できるようにすることです。
DatainputStreamおよびDataOutputStream:データのラインを受け入れたり、エンコードしたり、ソケットストリームになったり、ソケットファイルバイトストリームとネットワークバイトストリームである可能性があり、読み取りと書き込みの順序が一貫している必要があります。
DatainputStreamは、他の入力ストリームを飾るために使用されます。これにより、「アプリケーションが基礎となる入力ストリームから基本的なJavaデータ型を機械に依存しない方法で読み取ることができます」。アプリケーションは、DataOutputStreamを使用して、DatainputStreamによって読み取られたデータを記述できます。
上記は、java.io入力および出力ストリームフィルタリングストリームバッファーと、エディターが導入したデータストリームです。私はそれが誰にでも役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は、すべての人に時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!