我遇到了以UTF-8编码的单行格式大文件的问题。文件中的行具有恒定长度。
该文件平均有300k行。时间是主要的约束,所以我想尽可能以最快的方式做到这一点。
我试过LinQ
File.ReadLines("file.txt").Skip(noOfLines).Take(1).First();
但时间不够令人满意。
我最大的希望是使用流,并将其设置为所需的行开头,但问题是以字节为单位的行大小不同。
任何想法,怎么做?
答案 0 :(得分:1)
现在这是你不想使用linq的地方( - : 实际上,您希望在文件中找到第n次出现的新行并读取一些内容直到下一个新行。
您可能还想查看有关内存映射文件的此文档: https://msdn.microsoft.com/en-us/library/system.io.memorymappedfiles.memorymappedfile(v=vs.110).aspx
还有一篇文章比较了不同的访问方法 http://cc.davelozinski.com/c-sharp/fastest-way-to-read-text-files