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

时间:2009-09-02 20:14:27

标签: c#

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

现在,当我将文件读入字符串时,它会给系统内存异常。

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

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

3 个答案:

答案 0 :(得分:6)

你现在如何阅读文件? 您可以使用StreamReader类,并逐行读取文件(ReadLine方法) 您还可以在每次读取操作(读取方法)

时从文件中读取指定数量的字节

答案 1 :(得分:3)

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

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

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

答案 2 :(得分:1)

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

相关问题