2012-01-19 10 views
1

私はストリームを返される文字列に変換できるように、(XML、データベース、ファイルなどからの)任意のタイプのストリームデータを取り込めるヘルパーメソッドを作成したいと思います。ストリームクラス - ヘルパーメソッドの任意のタイプのデータに使用しますか?

だから私の考えは、疑似形でこれです:

public GetStreamText(Stream stream) 
{ 
    string data = string.Empty; 

    // convert the stream to string and set it to the data variable 

    return data; 

} 

今、このヘルパーが利用できる持っている目的は、我々はファイルからHTMLコンテンツをつかんだということです。後で、データベースや他のソースからそのコンテンツを取得するために、この機能を有効にします。だから、私はこれを再利用可能なもの(ジェネリック)にして、他の方法や冗長なコードをあちこちに作成する必要はありません。

だから私はなど、このへの応答からファイル、XMLドキュメント、およびXMLエンベロープを送ることができ

私は、ストリームは、ストリームを使用したオブジェクトのすべてのタイプがフォームを継承するように汎用的であるかどうかわからないんだけどしかし、私はそう思っている。

だから私はここでどのようにこれにアプローチするかを決める上でどこから始めるべきかはわかりません。

答えて

3

は、あなたの目的は、StreamReaderクラスによって満たされないでしょうか?

public string GetStreamText(Stream stream) 
{ 
    using (var reader = new StreamReader(stream)) 
     return reader.ReadToEnd(); 
} 

編集:エラボレーション...

ストリームは、基本的にバイトのシーケンスの抽象化図です。さまざまな種類のストリームは、さまざまなデータソースに対応するように設計されています。FileStreamはディスク上のファイルからバイトを読み取り、メモリからはMemoryStream、ネットワーク(インターネットなど)からはNetworkStreamなどを読み取ります。バイト列として表現される可能性のあるものはすべて、ストリームにカプセル化されます。

すべては、一連のバイトとして表現できます。これは、すべてのデジタルコンピューティングの基盤となる前提ですが、すべてがテキスト文字のシーケンスとして表現されるわけではありません。 "普遍的な方法"。私があなたに画像データのストリームを与えると仮定します。それをStringに変換することはできますが、そのように解釈されることは意図されていないため、コンテンツはガベージであるように見えます。

要約:はい、Streamはあらゆる種類のデータを処理するように設計されています。一方、Stringはそうではありません。

+0

ちょうどすべてのタイプのストリームがこれを使用するかどうかを判断しようとしているだけです(普遍的です)。私はストリームがストリームであり、実際にはどのオブジェクトもストリームに技術的に変換できると思います。 – PositiveGuy

+0

はい、私はそれがゴミを生産する可能性があると思っていますが、私はそれを守ることができないので、私は開発者がその状況でより良く知っているべきだと思います – PositiveGuy

0

のStreamReaderは、基本型のストリームの引数に取ります。

StreamReader reader = new StreamReader(stream); 
    string text = reader.ReadToEnd(); 
1

ストリームを処理するための汎用フォーマットを提供するには、ストリームをバイナリデータとして扱う必要があります。バイナリデータをbase64で文字列にエンコードできます。この逆を使って、base64エンコードされたテキストからストリームを作成することができます。これにより、任意のタイプのストリームの文字列値との間で双方向の変換を行うことができます。

関連する問題