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