gpt4 book ai didi

c# - 从内存流中删除数据

转载 作者:太空宇宙 更新时间:2023-11-03 22:25:43 27 4
gpt4 key购买 nike

我正在尝试了解 .Net MemoryStream 类的用法。由于流很忙,我需要使用存储一些临时动态长度二进制数据。所以我分配了一个内存流并暂时将数据写入其中。当我的流空闲时,我从内存流中读取所有数据并将数据写入其中。我通过将位置指针设置为 0 来做到这一点

即 mDataBuffer.Position=0;

然而,内存流类似乎不会在读取数据后丢弃数据。所以下次我得到和以前一样的数据。确认我写了这个示例程序

        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的这种行为,我真的是百思不得其解。任何人都可以阐明一下。此外,如果这是正常行为,那么我如何从流中删除过去的数据。

提前致谢,外婆

最佳答案

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

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

关于c# - 从内存流中删除数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1497948/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com