Хотя File.ReadAllLines()
является одним из простейших способов чтения файла, он также является одним из самых медленных.
Если вы просто хотите читать строки в файле, не делая многого, в соответствии с этими критериями , самым быстрым способом чтения файла является старый метод:
using (StreamReader sr = File.OpenText(fileName))
{
string s = String.Empty;
while ((s = sr.ReadLine()) != null)
{
//do minimal amount of work here
}
}
Однако, если вам приходится много делать с каждой строкой, тогда в этой статье делается вывод о том, что лучший способ заключается в следующем (и быстрее предварительно назначить строку [], если вы знаете, сколько строк вы собираетесь читать):
AllLines = new string[MAX]; //only allocate memory here
using (StreamReader sr = File.OpenText(fileName))
{
int x = 0;
while (!sr.EndOfStream)
{
AllLines[x] = sr.ReadLine();
x += 1;
}
} //Finished. Close the file
//Now parallel process each line in the file
Parallel.For(0, AllLines.Length, x =>
{
DoYourStuff(AllLines[x]); //do your work here
});
Внедрить фоновый режим с помощью AsyncTask
, который имеет как методы cancel()
, так и isCancelled()
.