目录
问题描述
有一堆名称相同但后缀不同的文件,提取其名称并创建目录,并将名称与之相同的文件移动至该目录下;
如将1.txt,1.dat,1.ini文件合并到...\1\目录下
软件界面
实现源码
归并按钮代码
private void buttonJoint_Click(object sender, EventArgs e)
{
//清理树视图
treeView1.Nodes.Clear();
//读入指定目录
string inputDir = textBox1.Text;
if (inputDir == "" || !System.IO.Directory.Exists(inputDir))
{
MessageBox.Show("输入目录为空或不存在", "错误提示");
return;
}
//同名文件拷贝与归并
string[] fileNames = System.IO.Directory.GetFiles(inputDir).ToArray();
foreach (string name1 in fileNames)
{
foreach (string name2 in fileNames)
{
string newDir = inputDir + @"\" + System.IO.Path.GetFileNameWithoutExtension(name1);
if (System.IO.Path.GetFileNameWithoutExtension(name1) == System.IO.Path.GetFileNameWithoutExtension(name2) &&
!System.IO.File.Exists(newDir + @"\" + System.IO.Path.GetFileName(name2)))
{
if(System.IO.Directory.Exists(newDir))
{
System.IO.File.Move(name2, newDir + @"\" + System.IO.Path.GetFileName(name2));
}
else
{
System.IO.Directory.CreateDirectory(newDir);
System.IO.File.Move(name2, newDir + @"\" + System.IO.Path.GetFileName(name2));
}
}
}
}
//树状图展示
System.IO.DirectoryInfo[] directs = new System.IO.DirectoryInfo(inputDir).GetDirectories();
TreeNode parentP = new TreeNode(inputDir);
treeView1.Nodes.Add(parentP);
foreach (System.IO.DirectoryInfo dif in directs)
{
TreeNode parent = new TreeNode(dif.ToString());
parentP.Nodes.Add(parent);
string[] sonFiles = System.IO.Directory.GetFiles(dif.FullName).ToArray();
foreach (string file in sonFiles)
{
parent.Nodes.Add(System.IO.Path.GetFileName(file));
}
}
treeView1.Show();
treeView1.ExpandAll();
}
}
输入目录拖拽代码
private void textBox1_DragDrop(object sender, DragEventArgs e)
{
textBox1.Text = ((System.Array)e.Data.GetData(DataFormats.FileDrop)).GetValue(0).ToString();
}
private void textBox1_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
{
e.Effect = DragDropEffects.Link;
}
else
{
e.Effect = DragDropEffects.None;
}
}
功能演示: