将数据写入和读取到MemoryStream

时间:2014-02-24 14:44:44

标签: c#

我尝试将一些数据写入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。怎么了?

2 个答案:

答案 0 :(得分:3)

您忘记将数据刷新到流中。如果要从头开始读取数据,还必须将位置设置为0。

lStreamWriter.Flush(); // after .Write!
lMemoryStream.Position = 0; // before read!

提示:不要关闭编写器,它也会关闭MemoryStream。完成数据后关闭它。

答案 1 :(得分:2)

当您写入流时,您可以提升您的位置(在所述流中)。要阅读您刚才写的值,您必须“回放”您的位置(通过设置)。