Суть вопроса: написать консольное приложение, которое сравнивало бы два текстовых файла (до изменения и файл после изменения) и записывало бы в 3й файл результат по следующим принципам:
одинаковые строки остаются как есть,
добавленные строки (в файл после изменения) записываются в 3й файл и помечаются знаком +,
соответственно удаленные - знаком -,
измененные знаком *
Пока написал код следующий:
public string pathSourceFile;
public string pathChangeFile;
public void GetInfo()
{
//для теста
Console.WriteLine($"До изменения: {pathSourceFile} После изменения: {pathChangeFile}");
DiffText(pathSourceFile, pathChangeFile);
}
public void DiffText(string pathS, string pathCh)
{
List<string> SourceList = new List<string>();
List<string> ChangeList = new List<string>();
List<string> ResultList = new List<string>();
using (StreamReader srS = new StreamReader(pathS))
{
string lineS;
while ((lineS = srS.ReadLine()) != null)
{
SourceList.Add(lineS);
Console.WriteLine(lineS);
}
}
using (StreamReader srCh = new StreamReader(pathCh))
{
string lineCh;
while ((lineCh = srCh.ReadLine()) != null)
{
ChangeList.Add(lineCh);
Console.WriteLine(lineCh);
}
}
SourceList.Count();
ChangeList.Count();
int j;
if(SourceList.Count() < ChangeList.Count())
{
j = SourceList.Count();
}
else
{
j = ChangeList.Count();
}
for (int i = 0; i < j; i++)
{
if (SourceList[i] == ChangeList[i])
{
ResultList.Add(SourceList[i].ToString());
}
}
ResultList.Count();
}
Проблема заключается в следующем:
Если элементы массивов равны, то строки одинаковы; с этим понятно.
А вот если не равны, то либо строка изменена, либо новая или удалена..
Возможно нужно по индексу еще сравнивать