FileStreamとStreamWriterの違い?


85

質問:

何の間で異なっているFileStreamStreamWriterネット

どのようなコンテキストで使用することになっていますか?それらの長所と短所は何ですか?

これら2つを1つに結合することは可能ですか?

回答:


98

dotnetのFileStreamとStreamWriterの違いは何ですか?

AFileStreamStreamです。すべてのストリームと同様に、byte[]データのみを扱います。

AはStreamWriter : TextWriter、ストリーム・デコレータです。TextWriterは、stringやcharなどのテキストデータをにエンコードしbyte[]てから、リンクされたに書き込みますStream

どのようなコンテキストで使用することになっていますか?それらの長所と短所は何ですか?

byte[]データがある場合は、ベアFileStreamを使用します。StreamWriterテキストを書きたいときにを追加します。より複雑なデータを書き込むには、フォーマッタまたはシリアライザを使用します。

これら2つを1つに結合することは可能ですか?

はい。StreamWriterを作成するには、常にStreamが必要です。ヘルパーメソッドSystem.IO.File.CreateText("path")はそれらを組み合わせて作成し、外部ライターをDispose()するだけで済みます。


4
またFileStream、これはストリームの一種であり、ファイル向けに特別に調整されていることに注意することも重要です。ストリームはネイティブにバイトで機能しますが、StreamWriter/ Readerは、sだけでなく、任意のストリームでテキストを読み書きしますFileStream。たとえば、MemoryStreamsNetworkStreams、など。
iliketocode

19

FileStreamはバイトを書き込み、StreamWriterはテキストを書き込みます。それで全部です。


14
実際、それは「すべて」ではありません...しかし、それは1つの正しい違いです。
デビッド

14

FileStreamは、作業ファイルを明示的に対象としています。

StreamWriterを使用して、ネットワークソケット、ファイルなど、あらゆるタイプのストリームにストリーミングできます。

ScottGuは、さまざまなStreamオブジェクトをここで非常にうまく説明しています:http//www.codeguru.com/Csharp/Csharp/cs_data/streaming/article.php/c4223


1
ランダムアクセスR / Wストリームについては説明していませんが、ストリームの優れたリファレンスです。特に、シリアル化/逆シリアル化の情報と非ファイルストリームのデモンストレーションは非常に役立ちます。+1
ThunderGr 2013年

7

まあ、MSDNからFileStream

ファイルの周囲にストリームを公開し、同期と非同期の両方の読み取りおよび書き込み操作をサポートします。

およびMSDN StreamWriter

特定のエンコーディングでストリームに文字を書き込むためのTextWriterを実装します。

最も明らかな違いは、書き込み専用FileStreamであるのに対し、読み取り/書き込み操作を許可することStreamWriterです。

このStreamWriterページはさらに次のように追加します。

StreamWriterは特定のエンコーディングでの文字出力用に設計されていますが、Streamから派生したクラスはバイト入出力用に設計されています。

したがって、2つ目の違いは、FileStreamバイトStreamWriter用であり、テキスト用です。


6

これらは、既知のデータソースに情報を出力する際に​​使用される2つの異なるレベルです。

AFileStreamはストリームの一種であり、概念的にはある場所を指し、その場所との間で送受信されるデータを処理できるメカニズムです。ファイル、ネットワーク接続、メモリ、パイプ、コンソール、デバッグおよびトレースリスナー、およびその他のいくつかのタイプのデータソースの読み取り/書き込み用のストリームが存在します。具体的にはFileStream、ファイルシステムへの読み取りと書き込みを実行するためのが存在します。ほとんどのストリームは使用量がかなり低レベルであり、データをバイトとして扱います。

AStreamWriterは、ストリームを使用してプレーンテキストを出力することを簡素化するストリームのラッパーです。バイトの代わりに文字列を受け取るメソッドを公開し、バイト配列との間で必要な変換を実行します。他の作家がいます。使用するもう1つの主なものは、XML形式でのXmlTextWriterデータの書き込みを容易にするです。同様にストリームをラップし、データを元に戻すのを容易にする、ライターに対応するリーダーもあります。


0

(上記のコメントに加えて)1つの重要な違いは、FileStreamがランダムディスクアクセスの読み取りと指定されたFileStream.Positionへの書き込みをサポートしていることです。大きなファイルの変更の場合、それは非常に貴重です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.