开发者社区> 问答> 正文

C# 关于学校升级中文件夹名升级出现重名的问题,应如何处理??报错

在学校升级的时候,相关班级的文件夹也要升级,譬如文件夹“一年级”要改名为“二年级”。

但是,我用C#编程,方法大致如下:

            DirectoryInfo folders = new DirectoryInfo(@"d:\a");
            foreach (DirectoryInfo s in folders.GetDirectories())
            {

                string t=s.ToString();
                if (t.IndexOf("小学六年级") == 0)
                {
                    Directory.CreateDirectory(@"d:\b\" + DateTime.Now.ToString("yyyy年MM月dd HH时mm分ss秒").Substring(0,16) + "");        
                    s.MoveTo(@"d:\b\" + DateTime.Now.ToString("yyyy年MM月dd HH时mm分ss秒").Substring(0, 16) + @"\" + t + "");            //备份毕业班的信息
                }
                else {
                    if (t.IndexOf("小学五年级") == 0)
                    {
                        t = t.Replace("小学五年级", "小学六年级");
                        s.MoveTo(@"d:\a\" + t + "");
                    }
                    if (t.IndexOf("小学四年级") == 0)
                    {
                        t = t.Replace("小学四年级", "小学五年级");
                        s.MoveTo(@"d:\a\" + t + "");
                    }
                    if (t.IndexOf("小学三年级") == 0)
                    {
                        t = t.Replace("小学三年级", "小学四年级");
                        s.MoveTo(@"d:\a\" + t + "");
                    }
                    if (t.IndexOf("小学二年级") == 0)
                    {
                        t = t.Replace("小学二年级", "小学三年级");
                        s.MoveTo(@"d:\a\" + t + "");
                    }

                    if (t.IndexOf("小学一年级") == 0)
                    {
                        t = t.Replace("小学一年级", "小学二年级");
                        s.MoveTo(@"d:\a\" + t + "");
                    }
                }

但是在遍历的时候,不一定按循序排列,所以修改文件夹的时候,会出现重名,报错。遇上这个问题,应该如何解决?或者是否存在方法,先将文件夹名称排序,再执行上述操作?

展开
收起
爱吃鱼的程序员 2020-06-22 19:43:15 351 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    加上GUID试试看可以具体一点吗?GUID和文件夹绑定?

    高年级的已经升级或者毕业,先处理高年级的,在处理低年级的,就无此问题。。

    如果先处理低年级的,在处理高年级的,肯定是重名了。

    回复<aclass='referer'target='_blank'>@t_kong:按你这样的话,你应该全部重命名,都加上一个后缀。再来修改。在把有后缀的去掉即可。回复<aclass='referer'target='_blank'>@t_kong:列表文件夹读取,而是在程序中去规定读取顺序就可以解决了嗯嗯,问题就是这样啊,如何避免重复?因为读取文件夹名称的时候不能按顺序读啊.....所以更新不能由高年级到低年级这样处理。就是如何解决这个问题啊?

    2020-06-22 19:43:33
    赞同 展开评论 打赏
问答分类:
C#
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
APP加固新方向 --混淆和瘦身 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载