从内存流中删除数据

时间:2009-09-30 13:00:44

标签: c# memorystream

我试图了解.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的

1 个答案:

答案 0 :(得分:4)

您的代码可以翻译成: *创建对象 *在0位写1 *读取位置0和输出(1) *在位置1写4 *读取位置0和输出(1)

您可以通过在ms.writebyte((byte)4)行上方插入ms.Position = 0来修复它。