有没有办法在部分中读取大文本文件?

我有一个大文件(60mb),我正在将文件读入一个字符串,然后我将该字符串返回给另一个方法。

现在,当我将文件读入字符串时,它给出系统内存不足的exception。

有没有办法读取部分文件并将其附加到字符串? 如果没有办法解决这个问题?

static public string Serialize() { string returnValue; System.IO.FileInfo file1 = new FileInfo(@"c:\file.txt"); returnValue = System.IO.File.ReadAllText(file1.ToString()); } 

你现在如何阅读文件? 您可以使用StreamReader类,并逐行读取文件(ReadLine方法)。
您还可以在每次读取操作时从文件中读取指定数量的字节(Read方法)

是的 – 它被称为流媒体。 看看StreamReader类 。 虽然我不确定为什么你想要一个字符串中的1个60MB。 如果可能的话,可能最好一次处理一下(可能在您的场景中逐行进行?)。

而不是ReadAllText查看OpenRead并将返回的FileStream传递给StreamReader的构造函数,如果可能的话,请看看沿着这些行做某些事情:

  using (FileStream fs = File.OpenRead("c:\theFile.text")) using (StreamReader sr = new StreamReader(fs)) { string oneLine = sr.ReadLine(); } 

即使你逐行读取它(或者通过流式传输部分读取),当你将它附加到单个字符串时,你将耗尽内存。 正在压缩它的选项? 如果没有,我可能会将JVM的maxHeap提升到512MB或类似。