【问题标题】:Removing data from memory stream从内存流中删除数据
【发布时间】:2009-09-30 13:00:43
【问题描述】:

我正在尝试了解 .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 的这种行为感到非常困惑。任何人都可以阐明一些观点。此外,如果这是正常行为,那么我如何从流中删除过去的数据。

提前致谢, 外婆

【问题讨论】:

    标签: c# memorystream


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2011-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-01
      • 2017-05-18
      • 2015-09-11
      • 2015-09-29
      相关资源
      最近更新 更多