2011-02-03 16 views
3

をストリーミングします。私はいくつかの解決策を思いついたが、私はそれらのストリームを直接接続する方法を見つけることができない。インターコネクトは、私はこのシナリオを持っている

私が達成しようとしているのは、まずtargetStreamからtargetStreamへのデータをtargetStreamのバッファなしでsourceStreamに送ります。

どうすればできますか?

ありがとうございます。

+2

ストリームを渡ってはいけません! ... ごめんなさい。自分自身を助けることができませんでした。 –

+1

@Mike「ストリームを渡ってはいけない! :) –

+0

"エゴンは私を許しますか?ストリームを渡ることは悪いと言いました!"ああ、私はその映画が大好き! – vtortola

答えて

6

CopyTo、例えば経由して別のストリームをコピーするためStreamに(.NET 4.0から)のサポートであり構築されています。

stream1.CopyTo(stream2) 

例:

[Test] 
public void test() 
{ 
    string inString = "bling"; 

    byte[] inBuffer = Encoding.ASCII.GetBytes(inString); 

    Stream stream1 = new MemoryStream(inBuffer); 
    Stream stream2 = new MemoryStream(); 

    //Copy stream 1 to stream 2 
    stream1.CopyTo(stream2); 

    byte[] outBuffer = new byte[inBuffer.Length]; 

    stream2.Position = 0;   
    stream2.Read(outBuffer, 0, outBuffer.Length); 

    string outString = Encoding.ASCII.GetString(outBuffer); 

    Assert.AreEqual(inString, outString, "inString equals outString."); 
} 
2

内蔵CopyToメソッドchibacityの回答で参照されているものは.NET 4.0から入手できます。

以前のバージョンについては、this questionをご覧ください。

関連する問題