93

質問:

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

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

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

4

6 に答える 6

106

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

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

AStreamWriter : TextWriterは Stream-decorator です。TextWriter は、string、int、char などのプリミティブ型をエンコードbyte[]し、リンクされた Stream にハットを書き込みます。

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

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

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

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

于 2011-02-10T23:26:13.110 に答える
21

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

于 2011-02-10T22:55:59.517 に答える
15

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

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

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

于 2011-02-10T22:56:31.917 に答える
8

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

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

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

于 2011-02-11T00:25:31.823 に答える
7

さて、のMSDNからFileStream

ファイルに関する Stream を公開し、同期および非同期の両方の読み取りおよび書き込み操作をサポートします。

および MSDN の場合StreamWriter:

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

最も明白な違いは、FileStream読み取り/書き込み操作が許可されているのに対し、StreamWriter書き込みのみが許可されていることです。

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

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

2 番目の違いはFileStream、バイト用でStreamWriterあり、テキスト用です。

于 2011-02-10T22:58:59.117 に答える
2

(上記のコメントに加えて)重要な違いの 1 つはFileStream、指定されFileStream.Positionた . 大規模なファイルの変更の場合、これは非常に貴重です。

于 2017-11-17T19:42:08.497 に答える