如何创建可读的Stream?

时间:2017-02-02 14:27:07

标签: c# .net stream

我正在进行一些测试,并且通过我创建的流来交换通常来自网络请求的Stream。

我像这样创建流:

MemoryStream responseDataStream = new MemoryStream();

using (StreamWriter sw = new StreamWriter(responseDataStream))
{
    sw.Write(responseData);
    sw.Flush();
    sw.Close();
}

然而,当我的代码尝试使用它时:

StreamReader reader = new StreamReader(myStream);

我收到错误Stream was not readable.

我想准备好我的流,以便它可以被消费。我怎么能这样做?

1 个答案:

答案 0 :(得分:5)

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

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

responseDataStream.Position = 0;