我试图了解.Net MemoryStream类的用法。当流忙时,我需要使用存储一些临时动态长度的二进制数据。所以我分配一个内存流并暂时将数据写入其中。当我的流被释放时,我从内存流中读取所有数据并将数据写入其中。我这样做是通过将位置指针设置为0
即mDataBuffer.Position = 0;
然而,一旦读取,memorystream类似乎不会丢弃数据。所以下次我获得与以前相同的数据。确认我写了这个示例程序
MemoryStream ms = new MemoryStream();
ms.WriteByte((byte)1);
ms.Position = 0;
Console.WriteLine(ms.ReadByte());
ms.WriteByte((byte)4);
ms.Position = 0;
Console.WriteLine(ms.ReadByte());
令我惊讶的是输出是(1,1),尽管我期望得到(1,4)的输出。
我对Memorystream的这种行为感到很困惑。任何人都可以解释一下。此外,如果这是正常行为,那么我如何从流中删除过去的数据。
提前致谢, Vaibhav的
答案 0 :(得分:4)
您的代码可以翻译成: *创建对象 *在0位写1 *读取位置0和输出(1) *在位置1写4 *读取位置0和输出(1)
您可以通过在ms.writebyte((byte)4)行上方插入ms.Position = 0来修复它。