在现代的数字办公环境中,经常需要处理大量的文件,这些文件可能包括文本文档、PDF文件、可执行文件、配置文件等。在某些情况下,需要将特定类型的文件从众多文件中分离出来,以便于管理和使用。本文将介绍一个基于C#.NET开发的文件分类工具,它能够帮助用户轻松实现这一需求。
对于熟悉C#.NET和基本文件操作的用户来说,这个工具将是一个非常有用的助手。它可以帮助用户从包含多个子目录的文件夹中,筛选出特定类型的文件,并将它们复制到用户指定的新目录中。
想象一下,有一个包含多个子目录的文件夹,里面存放着各种类型的文件,如文本文件、PDF文件、可执行文件、配置文件等。现在,如果想要将所有的PDF文件收集到一个名为"AllPDFs"的新文件夹中,那么这个工具就能派上用场了。
工具的界面简洁直观,用户可以通过"源路径"字段输入源目录路径,工具会在左侧的列表框中列出该路径下的所有子目录。"目标路径"是用户指定的文件将要被移动到的路径。"扩展名"字段允许用户输入他们想要筛选的文件扩展名。例如,如果用户输入"*.dll",那么工具将只查找并复制源目录及其子目录中的.dll文件到目标目录。
除了复制操作,工具还提供了"删除"和"移动"的附加功能。用户可以通过标记"附加功能"下拉框来开启或关闭这些功能。"移动"操作会根据用户指定的扩展名,从源目录中移动文件到目标目录。如果没有指定扩展名,那么源目录中的所有文件都将被移动到目标目录。"删除"操作则会删除源路径中与扩展名匹配的所有文件。如果没有指定扩展名,那么源路径中的所有文件都将被删除。
工具的核心功能是通过"getfiles"方法实现的,该方法返回一个包含要复制、移动或删除的文件的数组。以下是实现该方法的C#代码片段:
private string[] GetFiles()
{
string fileName = string.Empty;
string strSourcePath = textBox1.Text;
string strTargetPath = textBox2.Text;
string strExtension = !string.IsNullOrEmpty(textBox3.Text) ? textBox3.Text : "*.*";
string[] files = null;
if (System.IO.Directory.Exists(strSourcePath))
{
files = System.IO.Directory.GetFiles(strSourcePath, strExtension);
string joined = String.Join(", ", files);
files = null;
if (checkedListBox1.CheckedItems.Count != 0)
{
string strSubdirectories = "";
string strTempfilelist = "";
for (int x = 0; x < checkedListBox1.CheckedItems.Count; x++)
{
strSubdirectories = checkedListBox1.CheckedItems[x].ToString();
files = System.IO.Directory.GetFiles(strSubdirectories, strExtension);
strTempfilelist = String.Join(", ", files);
joined += "," + strTempfilelist + ",";
files = null;
strTempfilelist = string.Empty;
}
}
files = joined.Split(',');
}
else
{
MessageBox.Show("源路径不存在!");
}
return files;
}
上述代码首先检查源路径是否存在,如果存在,则获取该路径下所有匹配指定扩展名的文件。如果用户在复选框中选择了子目录,那么代码将遍历这些子目录,并将找到的文件添加到文件列表中。最后,代码将文件列表转换为数组,以便后续的删除、复制或移动操作。
以下是使用"getfiles"方法返回的数组执行复制操作的代码示例:
foreach (string s in files)
{
if (!string.IsNullOrEmpty(s))
{
fileName = System.IO.Path.GetFileName(s);
destFile = System.IO.Path.Combine(strTargetPath, fileName);
System.IO.File.Copy(s, destFile, true);
}
}
在这段代码中,遍历文件数组,对于每个文件,使用静态的Path方法提取文件名,并将其与目标路径组合,以形成目标文件的完整路径。然后,使用File.Copy方法将文件从源路径复制到目标路径。