【发布时间】:2011-09-21 09:54:28
【问题描述】:
我有两个文本文件 (TXT),其中包含超过 200 万个不同的文件名。我想遍历第一个文件中的所有名称并找到第二个文本文件中也存在的名称。
我尝试循环遍历StreamReader,但这需要很多时间。下面的代码我也试过了,还是太费时间了。
StreamReader first = new StreamReader(path);
string strFirst = first.ReadToEnd();
string[] strarrFirst = strFirst.Split('\n');
bool found = false;
StreamReader second = new StreamReader(path2);
string str = second.ReadToEnd();
string[] strarrSecond = str.Split('\n');
for (int j = 0; j < (strarrFirst.Length); j++)
{
found = false;
for (int i = 0; i < (strarrSecond .Length); i++)
{
if (strarrFirst[j] == strarrSecond[i])
{
found = true;
break;
}
}
if (!found)
{
Console.WriteLine(strarrFirst[j]);
}
}
比较文件的好方法是什么?
【问题讨论】:
-
您的第一个错误是将整个文件作为字符串读取并拆分它们。你应该一直在重复调用
ReadLine(),直到你读入null(典型的行读循环)。 -
@Jeff - 我想要存储的 TXT 文件大小超过 300 MB,我尝试使用 ReadLine() 但它需要更多时间。
标签: c# arrays performance data-structures loops