在.NET中,是否有一种行之有效的方法可以快速访问非常大(>;1 GB)二进制文件的特定区域

在.NET中,是否有一种行之有效的方法可以快速访问非常大(>;1 GB)二进制文件的特定区域,.net,performance,parsing,file-io,binaryfiles,.net,Performance,Parsing,File Io,Binaryfiles,使用一个非常大的原始二进制数据文件,我将创建一个大的二进制文件(大于1GB,通常大于4GB),其中包含任意数量的传感器(1到64)的传感器数据。用户将在GUI中使用新处理的文件,在GUI中,用户将在文件周围跳跃,查看不同的时间段或可能定义的其他索引。访问要尽可能平滑,这一点很重要,我也希望只加载所需的内容(用户看到的内容加上一点缓冲) 我希望构造处理后的数据文件,使其在开始时有一个索引,然后用于跳转到用户想要跳转的任何点 我应该从头开始写吗?或者是否有一些可能会用到的帮助程序库 我不想在原始数据

使用一个非常大的原始二进制数据文件,我将创建一个大的二进制文件(大于1GB,通常大于4GB),其中包含任意数量的传感器(1到64)的传感器数据。用户将在GUI中使用新处理的文件,在GUI中,用户将在文件周围跳跃,查看不同的时间段或可能定义的其他索引。访问要尽可能平滑,这一点很重要,我也希望只加载所需的内容(用户看到的内容加上一点缓冲)

我希望构造处理后的数据文件,使其在开始时有一个索引,然后用于跳转到用户想要跳转的任何点

我应该从头开始写吗?或者是否有一些可能会用到的帮助程序库


我不想在原始数据文件上添加索引的原因是,它的创建方式绝对不是读取单个传感器的最佳方式(运行压缩、存储在DCT块中的数据等)。

您可以使用内存映射文件。在.NET 4.0中,现在有包装器:

如果需要针对早期版本,则必须自己p/调用API方法:

你的问题似乎有些琐碎,尽管我相信还有更多的问题。听起来你所需要的只是在文件流中重新定位你的读取点。也许你需要一个更好的问题主题行——你的实际问题似乎更像:“我需要一个库来索引和查询非常大的二进制文件”。好吧,也许这很简单。你的评论就变成了答案。我想我在想,与从大到小(<1GB)的文件相比,索引非常大的二进制文件是否有什么困难。net系统库的内部工作机制并不总是很清楚。我不知道是否已尝试过,但我要做的是打开文件,然后遍历并取消引用文件中的不同指针,直到获得所需的信息,然后将其转储。而且,我倾向于用C++编写,但那只是我自己。这对我有帮助。