C#-将大(150MB)文本文件读入富文本框

C#-将大(150MB)文本文件读入富文本框,c#,windows,winforms,visual-studio,C#,Windows,Winforms,Visual Studio,我正在尝试将一个150mb的文本文件读入一个富文本框 目前,我正在使用StreamReader迭代文件中的每一行,将每一行附加到StringBuilder实例 这适用于较小的文件,但我在尝试读取较大文件时遇到System.OutOfMemory异常 我看不出读取150mb的文件有任何问题——有大量的物理内存,这完全在Windows 32位应用程序地址空间内 如果在座的任何人知道如何做到这一点,我们将不胜感激 我会在最后附上我的代码 谢谢 StringBuilder sb = new String

我正在尝试将一个150mb的文本文件读入一个富文本框

目前,我正在使用StreamReader迭代文件中的每一行,将每一行附加到StringBuilder实例

这适用于较小的文件,但我在尝试读取较大文件时遇到System.OutOfMemory异常

我看不出读取150mb的文件有任何问题——有大量的物理内存,这完全在Windows 32位应用程序地址空间内

如果在座的任何人知道如何做到这一点,我们将不胜感激

我会在最后附上我的代码

谢谢

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亿个字符的文本信息?即使您设法加载了它,我怀疑您是否可以编辑它(甚至滚动它)而不会出现更多问题。也许你可以发布你想要达到的目标?