C# 用内存映射文件读取大日志文件(.log)
C# 读取大文件的方法有很多,在这里我使用的是File.ReadAllBytes(fileName)一次读出来,再用MemoryStream放在内存,再用StreamReader一行行的读出来,速度也挺快的,16M的文本大概也就8秒左右,算起来差不多算快了。不过还是不能满足大文件(毕竟内存空间有限)。
//using System.IO;
//using System.Text;
//放入内存流,以便逐行读取
MemoryStream ms = new MemoryStream(File.ReadAllBytes(fileName));
using (StreamReader sr = new StreamReader(ms, Encoding.GetEncoding("GB2312")))
{
try
{
while (sr.Peek() > -1)
{
string info = sr.ReadLine();
//do something
}
}
catch (Exception ex) { sr.Close(); throw ex; }
}
ms = null;
//using System.Text;
//放入内存流,以便逐行读取
MemoryStream ms = new MemoryStream(File.ReadAllBytes(fileName));
using (StreamReader sr = new StreamReader(ms, Encoding.GetEncoding("GB2312")))
{
try
{
while (sr.Peek() > -1)
{
string info = sr.ReadLine();
//do something
}
}
catch (Exception ex) { sr.Close(); throw ex; }
}
ms = null;
参考:http://www.cnblogs.com/criedshy/archive/2010/06/13/1757826.html