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