私はそのバッファがバイトのシーケンスであることを読んだ。しかし私はまた、ストリームもバイトのシーケンスであることを読む。ストリーム&バッファの違いは何ですか?Cでのバッファとストリームの違い#
答えて
私がコメントしたように、バッファとストリームの違いは、ストリームは情報を指定されたソースとの間でやりとりするシーケンスであり、バッファはメモリに格納されたバイトシーケンスです。例:
FileStream stream = new FileStream("filepath.txt",FileMode.open);
ストリームをファイルに開きます。そのストリームは、ストリームの読み込み、書き込み、またはその両方を行うことができます。追加メモリを必要としないので、軽量で高速ですが、ソース内の特定のデータセットを任意に参照するのは面倒です。ストリームは、個別のデータセットではなく接続であるという利点もあります。そのため、あらかじめデータのサイズを知る必要はありません。逆
:
byte[] fileContents = File.ReadAllBytes("filepath.txt");
メモリにファイルのすべてのバイトを読み込みます。これは、一度にファイル全体を操作する必要がある場合や、ファイルが他の用途に使用できるようにプログラムを保持する「ローカルコピー」を保持する必要がある場合に便利です。ただし、ソースのサイズと使用可能なメモリの量によっては、のファイル全体がのファイルを含むバッファが選択できない場合があります。
これは単なるベアボーンの説明です。例えば、Marc Gravell puts itとして:
多くのデータ構造(リスト、コレクションなど)は、オブジェクトのセットを保持します。しかし、ストリームではありません。リストがバケットの場合、ストリームはホースです。ストリームからデータをプルすることも、ストリームにデータをプッシュすることもできますが、通常は一方向に1回だけ(例外はあります)。たとえば、ネットワーク上のTCPデータはストリームです。データのチャンクを送信(または受信)することはできますが、他のコンピュータとの接続でのみ、通常は1回だけ行うことができます。インターネットを巻き戻すことはできません。
ストリームは、それらを通過するデータを操作することもできます。圧縮ストリーム、暗号化ストリームなどがありますが、ここでも根本的なメタファーはデータのホースです。ファイルは一般に(あるレベルで)ストリームとしてアクセスされます。シーケンシャルデータのブロックにアクセスできます。もちろん、ほとんどのファイルシステムもランダムアクセスを提供しているので、ストリームはSeek、Position、Lengthなどのようなものを提供しますが、すべての実装がそれをサポートしているわけではありません。いくつかのストリームを探したり、オープンソケットの長さを取得する意味はありません。
私はまた、そのストリームは内部バッファを持っていると読んでいます。 –
@neelmaheta一般にストリームには内部バッファがありません。 _特定の種類のストリームがあります。たとえば、 'BufferedStream'や' MemoryStream'などです。 – Abion47
私はすべてのストリームがデフォルトのサイズの内部バッファを持っていることがわかります。あなたはconstructure.Iの値を渡すことによってデフォルトのバッファサイズを変更することができますこれはVisual Studio Express Edition 2013 –
バッファは、指定されたサイズ/長さを持ち、データの格納に使用されます。一方のストリームは、ある場所から別の場所へ情報を読み書きするために使用されます。例えば、FileStream
はファイルの読み書きに使用されます。ストリーム自体には、最大サイズまでフィルされたときにバッファされ、ストリーム内のデータが読み書きされるバッファがあります。
- 1. JavaのバッファリングされたストリームとC++のソケットとの違いは?
- 2. C++ストリームとCストリームを独立してバッファできるようにするメリットはありますか?
- 3. mapとmapToObjのJavaストリームの違い
- 4. ストリーム処理とメッセージ処理の違い
- 5. JavaとAzureストリーム分析の違い
- 6. メモリプールとバッファC++
- 7. nodejs:pdfストリーム\バッファをマージする
- 8. OpenCLの画像とバッファの違いは何ですか?
- 9. 2つのバッファの相違
- 10. kafkaストリームとmaprストリームの違いは、コーディングの観点からですか?
- 11. node.jsバッファとWebAssemblyメモリの違いは何ですか?
- 12. C#のストリームとチャンネル
- 13. Cバイナリファイルの読み取りバッファのデステージリングの場所の相違
- 14. CとC++の違い(lseek())
- 15. Cでのバッファのフラッシュ
- 16. P4V:PERFORCEストリームのマージ・ダウンとマージの違いは何ですか
- 17. Ruby IOストリームでの再割り当てと再オープンの違い
- 18. スカラストリームとJavaストリームの怠惰の相違
- 19. はC++のストリームとのシリアライズ
- 20. C++:ストリームとは
- 21. C++ストリームのeof()、fail()、bad()、およびgood()の違いは何ですか?
- 22. ネットワークプログラミングにおけるストリームとデータグラムの違いは何ですか?
- 23. の違い[、]と[] [] C#の
- 24. Visual C#とCとの違い
- 25. エラー:ストリームはEC2のみで空のバッファを生成します
- 26. リアクティブエクステンション:他のストリームが完了するまでのバッファ
- 27. Windows Media PlayerとC++のストリーム
- 28. リストのJavaストリームの相違
- 29. 空のストリームのallMatchとanyMatchの動作の違い
- 30. C#とCの揮発性の違い
バッファには指定された一定の長さがありますが、ストリームには指定されていません。 – ThePerplexedOne
ストリームは、読み書きされるバイトのシーケンスです。一方、バッファは、格納されている一連のバイトです。 – Abion47
@ Abion47あなたはバッファがバイトのシーケンスを格納する目的のためだと言ったので、私の質問はストリームがメモリにストアされていないということですか? –