我有一个填充流的代码。填充后,流的长度为1000(例如),而从流返回的字符串长度为。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.ReadString()
甚至不存在,如果它存在,则必须假设某种编码。