C# 如何比较用户选择的两个文件?

C# 如何比较用户选择的两个文件?,c#,comparison,file-comparison,C#,Comparison,File Comparison,我需要帮助来比较用户选择的文件。我似乎不知道该怎么做。到目前为止,我有以下代码。语言是C,它是一个GUI应用程序。起初,我试图分配一个bool类型的变量,并以这种方式比较文件,但compare按钮不起作用。如果有人能提供一些意见,我将不胜感激 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using Syst

我需要帮助来比较用户选择的文件。我似乎不知道该怎么做。到目前为止,我有以下代码。语言是C,它是一个GUI应用程序。起初,我试图分配一个bool类型的变量,并以这种方式比较文件,但compare按钮不起作用。如果有人能提供一些意见,我将不胜感激

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;


namespace FileComparison
{
public partial class Form1 : Form
{
    long fileSize1, fileSize2;
    FileInfo fileInfo1, fileInfo2;
    string fileName1, fileName2;
    double ratio;

    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        OpenFileDialog openFileDialog1 = new OpenFileDialog();

        if(openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
        {
            fileName1 = openFileDialog1.FileName;
            label3.Text = label3.Text + fileName1;

            fileInfo1 = new FileInfo(fileName1);
            fileSize1 = fileInfo1.Length;
        }
    }

    private void button2_Click(object sender, EventArgs e)
    {
        OpenFileDialog openFileDialog2 = new OpenFileDialog();

        if (openFileDialog2.ShowDialog() == System.Windows.Forms.DialogResult.OK)
        {
            fileName2 = openFileDialog2.FileName;
            label4.Text = label4.Text + fileName2;

            fileInfo2 = new FileInfo(fileName2);
            fileSize2 = fileInfo2.Length;
        }
    }

    private void button3_Click(object sender, EventArgs e)
    {

    }

如果要按文件大小进行比较。你可以这样做:

将控制台行更改为要显示在标签上的labelcontents

私有无效btn3\u单击对象发送者,事件参数e { iffileSize1>fileSize2 { Console.WriteLine$文件大小为{fileSize1}的文件1大于文件大小为{fileSize2}的文件2。; } else iffileSize1==fileSize2 { 文件大小为{fileSize1}的文件1等于文件大小为{fileSize2}的文件2; } 其他的 { Console.WriteLine$File 2(文件大小为{fileSize2})大于File 1(文件大小为{fileSize1})。; }
} 如果要在单击btn3时比较文件,请单击。 -首先,只需创建带有两个参数的单个函数。在函数中,我们匹配文件内容长度。 -在btn_单击中调用此函数。像这样

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace StackProject
{
    public partial class Form1 : Form
    {
        long fileSize1, fileSize2;
        FileInfo fileInfo1, fileInfo2;
        string fileName1, fileName2;
        double ratio;

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog1 = new OpenFileDialog();

            if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                fileName1 = openFileDialog1.FileName;
                label3.Text = label3.Text + fileName1;

                //fileInfo1 = new FileInfo(fileName1);
                //fileSize1 = fileInfo1.Length;
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog2 = new OpenFileDialog();

            if (openFileDialog2.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                fileName2 = openFileDialog2.FileName;
                label4.Text = label4.Text + fileName2;

                //fileInfo2 = new FileInfo(fileName2);
                //fileSize2 = fileInfo2.Length;
            }  
        }

        private void button3_Click(object sender, EventArgs e)
        {
            if (FileEquals(fileName1, fileName2))
            {
                MessageBox.Show("Same File");
            }
            else { MessageBox.Show("Different File"); }

        }


        private bool FileEquals(string path1, string path2)
        {
            byte[] file1 = File.ReadAllBytes(path1);
            byte[] file2 = File.ReadAllBytes(path2);
            if (file1.Length == file2.Length)
            {
                for (int i = 0; i < file1.Length; i++)
                {
                    if (file1[i] != file2[i])
                    {
                        return false;
                    }
                }
                return true;
            }
            return false;
        }
    }
}

“比较”按钮不起作用是什么意思?这项活动从未举行过吗?它被称为,但应该做它不做的事情吗?我想这是按钮3\u点击。那个里应该有什么代码?比较的结果应该是什么?只是对/错-相同还是不同?这个简单的比较可以通过哈希函数完成,例如SHA256file1==SHA256file2But。。。如果文件2相等,则会将其报告为更大。您还使用RoutedEventArgs而不是EventArgs。此代码段的语言不正确,因此无法运行。我认为不支持C。@code陌生人我习惯于在使用RoutedEventArgs的WPF C中工作。我编辑了代码,希望这更好。@BrootsWaymb我编辑了代码,希望这更好。