【发布时间】:2010-03-31 14:50:05
【问题描述】:
我需要阅读和处理一个文本文件。如果我可以使用File.ReadAllLines 方法,我的处理会更容易,但我不确定使用此方法可以读取的文件的最大大小是多少,而无需按块读取。
我了解文件大小取决于计算机内存。但是对于普通机器还有什么建议吗?
【问题讨论】:
-
我很好奇这个。您尝试过的最大文件大小是多少?你的盒子有多少内存?有没有抛出异常?
我需要阅读和处理一个文本文件。如果我可以使用File.ReadAllLines 方法,我的处理会更容易,但我不确定使用此方法可以读取的文件的最大大小是多少,而无需按块读取。
我了解文件大小取决于计算机内存。但是对于普通机器还有什么建议吗?
【问题讨论】:
在 32 位操作系统上,您最多可以获得大约 550 兆字节的连续内存块,允许加载一半大小的文件。在您的程序运行一段时间并且虚拟内存地址空间变得碎片化之后,这种情况会迅速下降。 100 兆字节几乎是您所希望的。
这在 64 位操作系统上不是问题。
由于一次读取一行文本文件与读取所有行一样快,所以这绝不是一个真正的问题。
【讨论】:
我以前用 1-2GB 做过类似的事情,尽管是在 Python 中。不过,我认为 .NET 不会有问题。但我只会为一次性处理这样做。
如果您定期执行此操作,您可能需要逐行浏览文件。
【讨论】:
除非您知道文件大小与正在运行的应用程序中可用的计算机内存,否则它的设计很糟糕。
更好的解决方案是考虑memory mapped files。他们将自己用作页面文件存储,
【讨论】: