C#编程学习34:同名不同后缀文件归并到以该名称为父目录的路径下

目录

 

问题描述

软件界面

实现源码

归并按钮代码

输入目录拖拽代码

功能演示:


问题描述

有一堆名称相同但后缀不同的文件,提取其名称并创建目录,并将名称与之相同的文件移动至该目录下;

如将1.txt,1.dat,1.ini文件合并到...\1\目录下

软件界面

C#编程学习34:同名不同后缀文件归并到以该名称为父目录的路径下_第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;
            }

        }

功能演示:

 

你可能感兴趣的:(C#编程学习,实用技能)