如何创建可读的Stream?

Nib*_*Pig 2 .net c# stream

我正在做一些测试,并且交换一个Stream,它通常来自我创建的流的Web请求.

我像这样创建流:

MemoryStream responseDataStream = new MemoryStream();

using (StreamWriter sw = new StreamWriter(responseDataStream))
{
    sw.Write(responseData);
    sw.Flush();
    sw.Close();
}
Run Code Online (Sandbox Code Playgroud)

但是,当我的代码尝试使用它时:

StreamReader reader = new StreamReader(myStream);

我收到了错误 Stream was not readable.

我想准备我的流,以便它可以被消费.我怎样才能做到这一点?

Lua*_*aan 5

默认情况下,StreamWriter获取您在构造函数中传递的流的所有权.当流编写器关闭时,它也将关闭底层流.您需要使用构造函数的不同重载,例如new StreamWriter(responseDataStream, Encoding.UTF8, true).

其次,流仍处于最后一次写入的位置.你需要回放它:

responseDataStream.Position = 0;
Run Code Online (Sandbox Code Playgroud)