【发布时间】:2011-04-08 17:56:25
【问题描述】:
我使用 BinaryReader (MemoryStream(MyByteArray)) 读取可变大小的记录并在内存中处理它们。只要我在数组中的字节流的大小小于 1.7 GB,这就会很好地工作。之后(这是我的 64 位系统中整数的最大大小),尽管我有足够的实际内存,但您无法创建更大的字节数组。所以我的解决方案是读取字节流并将其拆分为几个字节数组。
但是,现在我无法“读取”字节数组边界,而且由于我的数据是可变格式,我无法确保字节数组总是在整条记录上完成。
对于处理非常大的数据集并且仍然需要速度的人来说,这一定是一个常见问题。
我该如何处理这个问题?
【问题讨论】:
-
你应该防止这个大小的字节数组被加载到内存中。是否可以实现一个流式解决方案,您只将数组的一部分加载到内存(缓冲区)中?你需要随机访问这些字节吗?或者您是否可以使用仅向前的解决方案,您可以在处理流时从头到尾读取流(并且不回头)。这个字节数组来自哪里?一个文件,一个网络服务,...?
标签: c# bytearray memorystream