質問:
何の間で異なっているFileStream
とStreamWriter
でネット?
どのようなコンテキストで使用することになっていますか?それらの長所と短所は何ですか?
これら2つを1つに結合することは可能ですか?
回答:
dotnetのFileStreamとStreamWriterの違いは何ですか?
AFileStream
はStream
です。すべてのストリームと同様に、byte[]
データのみを扱います。
AはStreamWriter : TextWriter
、ストリーム・デコレータです。TextWriterは、stringやcharなどのテキストデータをにエンコードしbyte[]
てから、リンクされたに書き込みますStream
。
どのようなコンテキストで使用することになっていますか?それらの長所と短所は何ですか?
byte[]
データがある場合は、ベアFileStreamを使用します。StreamWriter
テキストを書きたいときにを追加します。より複雑なデータを書き込むには、フォーマッタまたはシリアライザを使用します。
これら2つを1つに結合することは可能ですか?
はい。StreamWriterを作成するには、常にStreamが必要です。ヘルパーメソッドSystem.IO.File.CreateText("path")
はそれらを組み合わせて作成し、外部ライターをDispose()するだけで済みます。
FileStreamは、作業ファイルを明示的に対象としています。
StreamWriterを使用して、ネットワークソケット、ファイルなど、あらゆるタイプのストリームにストリーミングできます。
ScottGuは、さまざまなStreamオブジェクトをここで非常にうまく説明しています:http://www.codeguru.com/Csharp/Csharp/cs_data/streaming/article.php/c4223
まあ、MSDNからFileStream
:
ファイルの周囲にストリームを公開し、同期と非同期の両方の読み取りおよび書き込み操作をサポートします。
およびMSDN StreamWriter
:
特定のエンコーディングでストリームに文字を書き込むためのTextWriterを実装します。
最も明らかな違いは、書き込み専用FileStream
であるのに対し、読み取り/書き込み操作を許可することStreamWriter
です。
このStreamWriter
ページはさらに次のように追加します。
StreamWriterは特定のエンコーディングでの文字出力用に設計されていますが、Streamから派生したクラスはバイト入出力用に設計されています。
したがって、2つ目の違いは、FileStream
バイトStreamWriter
用であり、テキスト用です。
これらは、既知のデータソースに情報を出力する際に使用される2つの異なるレベルです。
AFileStream
はストリームの一種であり、概念的にはある場所を指し、その場所との間で送受信されるデータを処理できるメカニズムです。ファイル、ネットワーク接続、メモリ、パイプ、コンソール、デバッグおよびトレースリスナー、およびその他のいくつかのタイプのデータソースの読み取り/書き込み用のストリームが存在します。具体的にはFileStream
、ファイルシステムへの読み取りと書き込みを実行するためのが存在します。ほとんどのストリームは使用量がかなり低レベルであり、データをバイトとして扱います。
AStreamWriter
は、ストリームを使用してプレーンテキストを出力することを簡素化するストリームのラッパーです。バイトの代わりに文字列を受け取るメソッドを公開し、バイト配列との間で必要な変換を実行します。他の作家がいます。使用するもう1つの主なものは、XML形式でのXmlTextWriter
データの書き込みを容易にするです。同様にストリームをラップし、データを元に戻すのを容易にする、ライターに対応するリーダーもあります。
FileStream
、これはストリームの一種であり、ファイル向けに特別に調整されていることに注意することも重要です。ストリームはネイティブにバイトで機能しますが、StreamWriter
/ Readerは、sだけでなく、任意のストリームでテキストを読み書きしますFileStream
。たとえば、MemoryStreams
、NetworkStreams
、など。