我试图读入一个150MB的文本文件到一个富文本框。
目前,我正在使用StreamReader遍历文件中的每一行,将每一行附加到一个StringBuilder实例。
这适用于较小的文件,但是当试图读取大文件时,我得到一个System.OutOfMemoryexception。
我没有看到任何读取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
http://msdn.microsoft.com/en-us/library/system.windows.forms.richtextbox.loadfile.aspx
我不知道为什么你要将整个文本加载到一个StringBuilder
。 或者,您可以将FileStream
传递给LoadFile
,它将为您呈现大文件。
我想你应该以某种方式管理输入文件 – 比如说把它分成几个较少的文件,然后以编程的方式在各部分之间进行导航。
150MB的文件听起来像一个不正常的事情。 也许你应该看看流类型的数据处理,而不是一个文件。