我正在尝试创建一个将从文件(我已经创建的文件)中读取的程序。
然后程序必须将上述文件与另一个文件(我也有)进行比较。
有人可以帮助我吗?我已经创建了必须读取第一个文件的部分。另外,如果有帮助,我正在使用控制台应用程序。
我正在尝试创建一个将从文件(我已经创建的文件)中读取的程序。
然后程序必须将上述文件与另一个文件(我也有)进行比较。
有人可以帮助我吗?我已经创建了必须读取第一个文件的部分。另外,如果有帮助,我正在使用控制台应用程序。
这是一个可能的直接解决方案:
String[] file1Lines = File.ReadAllLines(path1);
String[] file2Lines = File.ReadAllLines(path2);
for (int i = 0; i < Math.Max(file1Lines.Length, file2Lines.Length); i++)
{
if (i > file1Lines.Length)
/* missing from file 1 */ ;
else if (i > file2Lines.Length)
/* missing from file 2); */ ;
else if (file1Lines[i].Equals(file2Lines[i]))
/* lines are equal */ ;
else
/* lines are different */ ;
}
一个简单的 Linq 方法使用Enumerable.Except
它产生集合差异:
var file1 = File.ReadAllLines(path1);
var file2 = File.ReadAllLines(path2);
var onlyInFileA = file1.Except(file2);
var onlyInFileB = file2.Except(file1);
foreach(string line in onlyInFileA)
{
// ...
}
foreach(string line in onlyInFileB)
{
// ...
}
请注意,您也可以比较不区分大小写。你只需要使用的重载Except
:
var onlyInFileA = file1.Except(file2, StringComparer.OrdinalIgnoreCase);