gpt4 book ai didi

c# - 提供对超大 (50GB+) ASCII 文件的随机读取访问

转载 作者:太空宇宙 更新时间:2023-11-03 18:35:59 24 4
gpt4 key购买 nike

我的任务是以 C# 控制台应用程序的形式提供对非常大 (50GB+) ASCII 文本文件的随机读取访问(处理第 n 行/第 n 行第 n 个字的请求)。

经过几天的谷歌搜索和阅读,我得出了这样的实现愿景:由于 StreamReader 擅长顺序访问,因此可以使用它来构建文件中行/词的索引(List<List<long>> 映射,其中 map[i][j] 是第 i 行第 j 个词开始的位置)。然后使用索引通过MemoryMappedFile访问文件,因为它擅长提供随机访问。

解决方案中是否存在一些明显的缺陷?对于给定的任务,它是最优的吗?

UPD:在64位系统下执行。

最佳答案

看起来不错,但如果您使用 MemoryMapping,那么您的程序将只能在 64 位系统上运行,因为您超出了可用的 2GB 有效地址空间。

您只需使用 FileStream 并调用 .Seek() 即可跳转到适当的选定偏移量,因此我认为没有必要用于使用 MemoryMapped 文件。

关于c# - 提供对超大 (50GB+) ASCII 文件的随机读取访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15420369/

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