我有一个代码,填充一个流。在填充之后,流的长度为1000(例如),而从Stream.ReadString返回的字符串长度为997,StreamReader.ReadToEnd()的返回值为空流。Stream.ReadString返回一个结果,而使用StreamReader.ReadToEnd返回string.Empty,都是错误的
这里有一个代码,显示我的意思(当然,这不正是我工作的代码,但问题是相同的):
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之后,没有更多内容可以从流或阅读器中读取,因为它们都位于流尾。也许你应该发布一些* real *代码作为一个简短但完整的程序,它实际上编译和演示了这个问题... –