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

目录

 

问题描述

软件界面

实现源码

归并按钮代码

输入目录拖拽代码

功能演示:


问题描述

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

如将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;
            }

        }

功能演示:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小薛引路

喜欢的读者,可以打赏鼓励一下

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值