大体界面如下:

wKiom1bDPpHgJ7lsAADPABH8nq0134.jpg

OpenFileA按钮的单击事件代码如下:

private void btnOpenA_Click(object sender, EventArgs e)
{
    OpenFileDialog openFileDialog = new OpenFileDialog();
    openFileDialog.Filter = "txt文件(*.txt)|*.txt";
    if (openFileDialog.ShowDialog() == DialogResult.OK)
    {
        this.txtFileA.Text = openFileDialog.FileName.ToLower(); //得到的文件名包含路径
    } 
}

OpenFileB按钮的单击事件代码如下:

private void btnOpenB_Click(object sender, EventArgs e)
{
    OpenFileDialog openFileDialog = new OpenFileDialog();
    openFileDialog.Filter = "txt文件(*.txt)|*.txt";
    if (openFileDialog.ShowDialog() == DialogResult.OK)
    {
        this.txtFileB.Text = openFileDialog.FileName.ToLower(); //得到的文件名包含路径
    } 
}

FileA-FileB按钮的单击事件代码如下:

注意:FileA-FileB是指那些包含在A中但是不包含在B中的文件A的内容,注意该例中的文件都是文本文件,文件的内容是单列。

private void btnADiffB_Click(object sender, EventArgs e)
{
    string[] linesA = System.IO.File.ReadAllLines(this.txtFileA.Text);
    List<string> listA = linesA.ToList();

    string[] linesB = System.IO.File.ReadAllLines(this.txtFileB.Text);
    List<string> listB = linesB.ToList();

    for (int i = 0; i < listB.Count; i++)
    {
        if (listA.Contains(listB[i]))
        {
            listA.Remove(listB[i]);
        }
    }

    FileStream fs = File.Open(@"d:\FileADiffB.txt", FileMode.Create);
    StreamWriter sw= new StreamWriter(fs);
    for (int i = 0; i < listA.Count; i++)
    {
        sw.WriteLine(listA[i]);
    }
    sw.Flush();
    sw.Close();
    fs.Close();

    this.lbResult.Text = "file A-B have write to d:\\FileADiffB.txt";
}

FileB-FileA按钮的单击事件代码如下:

注意:FileB-FileA是指那些包含在B中但是不包含在A中的文件B的内容,注意该例中的文件都是文本文件,文件的内容是单列。

private void btnBDiffA_Click(object sender, EventArgs e)
{
    string[] linesA = System.IO.File.ReadAllLines(this.txtFileA.Text);
    List<string> listA = linesA.ToList();

    string[] linesB = System.IO.File.ReadAllLines(this.txtFileB.Text);
    List<string> listB = linesB.ToList();

    for (int i = 0; i < listA.Count; i++)
    {
        if (listB.Contains(listA[i]))
        {
            listB.Remove(listA[i]);
        }
    }

    FileStream fs = File.Open(@"d:\FileBDiffA.txt", FileMode.Create);
    StreamWriter sw = new StreamWriter(fs);
    for (int i = 0; i < listB.Count; i++)
    {
        sw.WriteLine(listB[i]);
    }
    sw.Flush();
    sw.Close();
    fs.Close();

    this.lbResult.Text = "file B-A has been writed to d:\\FileBDiffA.txt";
}