我需要比较两个txt文件(file1被用作基线,而file2是需要与file1比较的一个),我想找出与file3的区别,包括缺少的行,多余的行和行具有不同的内容。
对于我当前的代码,如果缺少file2中的第二行,则file2中的所有后续行都将写入到file3中。在这种情况下,如何跳过丢失的行而仅找出完全不同的行?有什么想法吗?
int file1LineNo = 0;
int file2LineNo = 0;
string file1lineStr;
string file2Str;
SortedDictionary<int, Object[]> info = new SortedDictionary<int, Object[]>();
string[] file1Lines = File.ReadAllLines(file1Name);
string[] file2Lines = File.ReadAllLines(file2Name);
while (file1LineNo<file1Lines.length)
{
file1lineStr = file1Lines[file1LineNo];
if (file1lineStr != null)
{
while(file2LineNo<file2Lines.Length)
{
file2Str = file2Lines[file2LineNo];
if (file1LineNo == file2LineNo)
{
if(!file2Str.Trim().Equals(file1Str.Trim()))
{
Result = false;
info.Add(rowNumber1++, new Object[]{"", file1lineStr, file2Str});
}
break;
}
file2LineNo++;
}
}
}
file1LineNo++;
}
foreach(var infoValue in info)
{
Object[] objectArr = info.Value;
for (int I=0; I<objectArr.Length; i++)
{
result.WriteResultToFile3(....);
}
rowed++;
}
return Result;
}
}
}
答案 0 :(得分:2)
这将在两个文件中输出差异,输出差异文件和具有相同内容的文本文件。您可以使用git diff选项进一步修改输出以选择。您可能需要在计算机上安装Git客户端,或者使用NuGet软件包将其嵌入到源代码中。
using System;
using System.Collections.ObjectModel;
using System.Management.Automation;
namespace PowerShell_Export_Differences
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
string directory = "C:/PowershellTest";
using (PowerShell powershell = PowerShell.Create())
{
powershell.AddScript(String.Format(@"cd {0}", directory));
powershell.AddScript(@"git init");
powershell.AddScript(@"git diff --no-index Text1.txt Text2.txt > Text3.diff");
powershell.AddScript(@"git diff --no-index Text1.txt Text2.txt > Text3.txt");
Collection <PSObject> results = powershell.Invoke();
Console.Read();
}
}
}
}
示例输出:
答案 1 :(得分:0)
您的问题有点不明确,您确实需要显示一些代码。
说如果您的行基本上是“空白/空白”,请尝试以下操作。
从文件1和文件2中删除所有“空白/空白”行,然后进行比较。
说实话,这有点“笨拙”,但它可以回答您的问题。
显示您已经尝试过的内容(代码方面),而民间人士可能更愿意写点东西。
答案 2 :(得分:-2)
您必须阅读每一行并将行存储在不同的字符串中,然后进行比较。 例如
string s1 =“ first”; //存储您从file1中读取的行
string s2 =“ second”; //存储您从file2中读取的行
if(!s1.Equals(s2))
{
// store the Result in file3 if there are not Equals.
}
注意:两个文件中行的顺序相同时,此代码有效。