【发布时间】:2011-10-30 09:40:26
【问题描述】:
我有一个填充流的代码。填充后,流的长度为1000(例如),而Stream.ReadString返回的字符串长度为997,StreamReader.ReadToEnd()返回的值为空流。
这是一个显示我的意思的代码(显然,这不完全是我的工作代码,但问题是一样的):
MemoryStream stream = MethodCreatingPopulatedStream(stream);
StreamReader reader = new StreamReader(stream);
if (stream.Length != reader.ReadToEnd().Length)
{
PostQuestionInStackOverFlow();
}
else if (!string.Equals(reader.ReadToEnd(), stream.ReadString()))
{
PostQuestionInStackOverFlow();
GetAnnoyedAtDotNet();
}
else
{
Smile();
}
我在这里错过了什么?
P.S,在任何地方添加 Stream.Flush 都没有改变
【问题讨论】:
-
Kent 已经涵盖了大部分内容 - 但是在您在第一个块中调用
ReadToEnd之后,无论从流还是从读取器中都没有什么可以读取的了,因为两者都位于末尾的流。也许您应该发布一些真实代码作为一个简短但完整的程序,它实际上可以编译和演示问题......
标签: c# stream streamreader