我目前正在开发一个读取大约 50000 行文本文件的应用程序。对于每一行,我需要检查它是否包含特定的字符串。
目前,我使用常规System.IO.StreamReader
方式逐行读取我的文件。
问题是文本文件的大小每次都会改变。我做了几个测试性能,我注意到当文件大小增加时,读取一行需要更多的时间。
例如 :
读取包含 5000 行的 txt 文件:0:40
读取包含 10000 行的 txt 文件:2:54
读取 2 倍大的文件需要 4 倍的时间。我无法想象读取 100000 行文件需要多少时间。
这是我的代码:
using (StreamReader streamReader = new StreamReader(this.MyPath))
{
while (streamReader.Peek() > 0)
{
string line = streamReader.ReadLine();
if (line.Contains(Resources.Constants.SpecificString)
{
// Do some action with the string.
}
}
}
有没有办法避免这种情况:更大的文件 = 更多的时间来阅读一行?