-4

我正在尝试创建一个将从文件(我已经创建的文件)中读取的程序。

然后程序必须将上述文件与另一个文件(我也有)进行比较。

有人可以帮助我吗?我已经创建了必须读取第一个文件的部分。另外,如果有帮助,我正在使用控制台应用程序。

4

2 回答 2

1

这是一个可能的直接解决方案:

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 */ ;
}
于 2013-01-21T20:48:05.863 回答
1

一个简单的 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);
于 2013-01-21T20:40:09.670 回答