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

t_kong 发布于 2013/05/07 10:10
阅读 147
收藏 0

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

但是,我用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 + "");
                    }
                }

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

加载中
0
周睿
周睿
加上GUID试试看
t
t_kong
可以具体一点吗?GUID和文件夹绑定?
0
newzai
newzai

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

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

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