C#-将大(150MB)文本文件读入富文本框
我正在尝试将一个150mb的文本文件读入一个富文本框 目前,我正在使用StreamReader迭代文件中的每一行,将每一行附加到StringBuilder实例 这适用于较小的文件,但我在尝试读取较大文件时遇到System.OutOfMemory异常 我看不出读取150mb的文件有任何问题——有大量的物理内存,这完全在Windows 32位应用程序地址空间内 如果在座的任何人知道如何做到这一点,我们将不胜感激 我会在最后附上我的代码 谢谢C#-将大(150MB)文本文件读入富文本框,c#,windows,winforms,visual-studio,C#,Windows,Winforms,Visual Studio,我正在尝试将一个150mb的文本文件读入一个富文本框 目前,我正在使用StreamReader迭代文件中的每一行,将每一行附加到StringBuilder实例 这适用于较小的文件,但我在尝试读取较大文件时遇到System.OutOfMemory异常 我看不出读取150mb的文件有任何问题——有大量的物理内存,这完全在Windows 32位应用程序地址空间内 如果在座的任何人知道如何做到这一点,我们将不胜感激 我会在最后附上我的代码 谢谢 StringBuilder sb = new String
StringBuilder sb = new StringBuilder();
using (StreamReader sr = new StreamReader(fileLocation))
{
string line;
while ((line = sr.ReadLine()) != null)
{
sb.AppendLine(line);
}
}
return sb;
使用
RichTextBox.LoadFile
我不确定您为什么要将整个文本加载到
StringBuilder
。或者,您可以将一个FileStream
传递给LoadFile
,它将为您呈现一个大文件。我想您应该以某种方式管理输入文件,比如说将其拆分为几个较小的文件,并以编程方式在各个部分之间导航
150MB的文件听起来很不正常。也许您应该查看流类型的数据处理,而不是文件类型。恐怕这也会导致System.OutOfMemoryException。有什么想法吗?你能发布一个堆栈跟踪吗?因此,我们可以准确地看到异常发生的位置。另外,这可能是相关的:(关于字符串生成器)请澄清,这段代码(读取部分)是否引发异常,或者在加载RTB时是否发生异常?但是是150MB的文本文件?它包含19世纪所有的书吗?:)使用初始大小初始化,减少调整大小的需要。请记住,每次达到最大值时,它都会将缓冲区大小加倍。可以从构造函数设置大小。接下来调用.EnsureCapacity()在内存中腾出空间。有人问过为什么吗?你到底打算如何处理包含1.5亿个字符的文本信息?即使您设法加载了它,我怀疑您是否可以编辑它(甚至滚动它)而不会出现更多问题。也许你可以发布你想要达到的目标?