我有以下代码将文件的内容加载到内存但我想要一个更好的方法,因为我收到以下错误
Unhandled Exception: OutOfMemoryException.
是否有一种更有效的方法来处理我将要查看的大多数文件是1.85 GB
class Program
{
public static string sDate;
public static string sTerm;
static void Main(string[] args)
{
Console.WriteLine("Enter the date to search - yyyy-mm-dd");
sDate = Console.ReadLine();
Console.WriteLine("Enter search term");
sTerm = Console.ReadLine();
DirectoryInfo di = new DirectoryInfo(Environment.GetEnvironmentVariable("ININ_TRACE_ROOT") + "\\" + sDate + "\\");
FileInfo[] files = di.GetFiles("*.ininlog");
foreach (FileInfo file in files)
{
using (StreamReader sr = new StreamReader(file.FullName))
{
string content = sr.ReadToEnd();
if (content.Contains(sTerm))
{
Console.WriteLine("{0} contains\"{1}\"", file.Name, sTerm);
}
}
}
}
}
答案 0 :(得分:4)
您可以使用StreamReader.ReadLine
逐行处理文件。
using (StreamReader sr = new StreamReader(file.FullName))
{
string line;
while((line = sr.ReadLine()) != null)
{
if (line.Contains(sTerm))
{
Console.WriteLine("{0} contains\"{1}\"", file.Name, sTerm);
break;
}
}
}