gpt4 book ai didi

c# - 基于较长的流创建固定长度的流

转载 作者:行者123 更新时间:2023-11-30 12:29:12 24 4
gpt4 key购买 nike

许多反序列化 API 采用流,并且将读取到流的末尾,如果它们在到达流的末尾之前运行超过序列化对象的末尾,则会出错。在我的流中,我按顺序序列化了几个对象。然后我想稍后从该流中反序列化它们。我知道每个对象的长度,如果他们采用这样的参数,我可以告诉他们读取流的距离,但他们没有。

我想我可以通过创建一个“子流”来解决这个问题,该子流将较长的流作为其构造函数的第一个参数以及一个长度,之后子流将声称结束,这将导致反序列化器终止,父流将被正确定位以开始反序列化下一个对象。

所以我的问题是,BCL 中是否已经有一个类来支持这一点,或者是否有人有此类自定义流的示例?

提示:我故意在这里谈论流,而不是内存缓冲区。我知道我可以从流中读出 x 个字节,然后将 MemoryStream 作为其基础,但我不能假设整个流将立即放入内存中。

最佳答案

不,BCL 中没有这样的类。

如果您只需要同步读取操作,那么编写代码非常简单 - 从 Stream 派生并实现 Read,通过正确的边界检查重定向到内部流。您可能需要实现 CanSeek/Length 属性和 ReadByte(如果您的代码中使用了它)。

关于c# - 基于较长的流创建固定长度的流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19309535/

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