我尝试将一些数据写入MemoryStream
,然后正确读取它。例如:
int someValue = 10;
Console.WriteLine(someValue);
Console.ReadKey();
MemoryStream lMemoryStream = new MemoryStream();
StreamWriter lStreamWriter = new StreamWriter(lMemoryStream);
lStreamWriter.Write(someValue);
StreamReader lStreamReader = new StreamReader(lMemoryStream);
int someValue2 = lStreamReader.Read();
Console.WriteLine(someValue2);
Console.ReadKey();
但是作为响应,我得到空的memoryStream,并获得值-1。怎么了?
答案 0 :(得分:3)
您忘记将数据刷新到流中。如果要从头开始读取数据,还必须将位置设置为0。
lStreamWriter.Flush(); // after .Write!
lMemoryStream.Position = 0; // before read!
提示:不要关闭编写器,它也会关闭MemoryStream。完成数据后关闭它。
答案 1 :(得分:2)
当您写入流时,您可以提升您的位置(在所述流中)。要阅读您刚才写的值,您必须“回放”您的位置(通过设置)。