最近在整理文件夹时发现,在不同的文件夹里总是有重复的文件,开始手动一个个对比进行删除,但是后来发现要比对的文件数量太大了,如果一一手动对比将是一个很大的工作量,不仅浪费时间精力,效率还不高,于是就用C# winform写了一个比对两个文件夹中重复的文件的小工具,然后实现批量操作,这在很大程度上节省了人工精力,下面将编程实现原理给大家分享一下,希望对正在学习C#编程的同学有所帮助。
先给大家上个效果图看看效果,
下面就图上内容说说代码实现原理,
首先,我们要对比两个文件夹中的内容,就需要知道两个文件夹的路径,可以使用代码:
//浏览目标文件夹
FolderBrowserDialog dialog = new FolderBrowserDialog();
if (dialog.ShowDialog() == DialogResult.OK)
{
//将目标文件夹路径赋给textBox
textBox1.Text = dialog.SelectedPath;
}
获取两个文件夹的路径后,就需要进行文件对比了,代码如下:
string path1 = textBox1.Text;
string path2 = textBox2.Text;
//判断目标路径是否为空
if (!string.IsNullOrEmpty(path1) && !string.IsNullOrEmpty(path2))
{
//将目标文件夹中所有文件放入数组
string[] filenames1 = Directory.GetFiles(path1);
string[] filenames2 = Directory.GetFiles(path2);
int i = 0;
richTextBox1.Clear();
//遍历文件夹1中所有文件
foreach (string filename1 in filenames1)
{
//遍历文件夹2中所有文件
foreach (string filename2 in filenames2)
{
//获取带扩展的文件名
string name1 = Path.GetFileName(filename1);
string name2 = Path.GetFileName(filename2);
//判断文件名是否相同
if (name1 == name2)
{
//如果是重复文件则写入richTextBox
richTextBox1.Text += (name1 + "\r\n");
i++;
}
}
}
label3.Text= "发现同名文件共计:"+i.ToString()+"个";
找到了重复文件后,接下来就是将它们删除了,
if (comboBox1.Text == "删除文件夹1中的同名文件")
{
int i = 0;
//遍历richTextBox中重复的文件
foreach (string s in richTextBox1.Lines)
{
//执行删除
if (File.Exists(textBox1.Text + @"\" + s))
{
File.Delete(textBox1.Text + @"\" + s);
i++;
}
}
MessageBox.Show("共计删除了"+i.ToString()+"个同名文件","提示");
}
else if (comboBox1.Text== "删除文件夹2中的同名文件")
{
int i = 0;
foreach (string s in richTextBox1.Lines)
{
if (File.Exists(textBox2.Text + @"\" + s))
{
File.Delete(textBox2.Text + @"\" + s);
i++;
}
}
MessageBox.Show("共计删除了" + i.ToString() + "个同名文件", "提示");
}
OK,到这里C#实现两个文件夹中的文件比对代码就介绍完了,有兴趣的小伙伴可以自己动手体验一把哦!