我正在进行一些测试,并且通过我创建的流来交换通常来自网络请求的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.
我想准备好我的流,以便它可以被消费。我怎么能这样做?
答案 0 :(得分:5)
默认情况下,StreamWriter
取得您在构造函数中传递的流的所有权。当流编写器关闭时,它也将关闭底层流。您需要使用构造函数的不同重载,例如new StreamWriter(responseDataStream, Encoding.UTF8, true)
。
其次,流仍处于最后一次写入的位置。你需要回放它:
responseDataStream.Position = 0;