Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 互连流_C#_.net_File_Stream_Io - Fatal编程技术网

C# 互连流

C# 互连流,c#,.net,file,stream,io,C#,.net,File,Stream,Io,我有这样一个场景: DownloadLibrary.GetData(Stream targetStream); SaveLibrary.WriteData(Stream sourceStream); 我想将targetStream收集的数据发送到sourceStream。我已经想出了一些解决方案,但我找不到直接连接这些流的方法 我试图实现的是将数据从targetStream发送到sourceStream,而不首先缓冲targetStream 怎样才能做到呢 提前感谢。在流中有内置的支持(来自.

我有这样一个场景:

DownloadLibrary.GetData(Stream targetStream);
SaveLibrary.WriteData(Stream sourceStream);
我想将targetStream收集的数据发送到sourceStream。我已经想出了一些解决方案,但我找不到直接连接这些流的方法

我试图实现的是将数据从targetStream发送到sourceStream,而不首先缓冲targetStream

怎样才能做到呢

提前感谢。

流中有内置的支持(来自.Net 4.0),用于通过
CopyTo
将一个流复制到另一个流,例如:

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.");
}

chibacity回答中提到的内置CopyTo方法可从.NET4.0获得


对于早期版本,请查看。

不要跨流。。。很抱歉我情不自禁。@Mike“不要穿越小溪!!!”:“对不起,Egon?你说穿越小溪很糟糕!”噢,我喜欢那部电影!!