C# 学校文件夹升级 和 Directory.Copy

一开始的时候,在想对学校进行升级,电脑里面相关文件夹也要修改(因为文件夹的命名是用班级名称为名),譬如文件夹名为:“中班”,要改成:“大班”

但是问题是,我用语句:DirectoryInfo folders = new DirectoryInfo(@"d:\a");记录文件夹名的时候,是无序的一组DirectoryInfo。

所以不能直接修改文件夹的名字,因为这样快导致异常:文件夹重名。

最后想到建立临时文件夹来解决这个问题。将修改后的文件夹MoveTo临时文件夹目录中,所有的文件夹修改完成后再把内容Copy过去原来的根文件夹下。

参考代码如下:

    string item = Guid.NewGuid().ToString();

            Directory.CreateDirectory(@"d:\" + item + "");
            DirectoryInfo folders = new DirectoryInfo(@"d:\upgrade");


            foreach (DirectoryInfo s in folders.GetDirectories())
            {
                string t = s.ToString();
                if (t.IndexOf("大班") == 0) //对毕业班的操作是先备份,然后删除。
                {

    string time=DateTime.Now.ToString("yyyy年MM月dd HH时mm分ss秒");
                    Directory.CreateDirectory(@"d:\backup\" + time + "");
                    s.MoveTo(@"d:\backup\" + time + @"\" + t + "");
                }
                else {
                    if (t.IndexOf("中班") == 0)
                    {
                        t = t.Replace("中班", "大班");
                        s.MoveTo(@"d:\" + item + @"\" + t + "");
                    }
                    if (t.IndexOf("小班") == 0)
                    {
                        t = t.Replace("小班", "中班");
                        s.MoveTo(@"d:\" + item + @"\" + t + "");
                    }
                }
            }
            

    //此处就是关于文件夹的转移问题了。开始的时候google到了方法:Directory.Copy实现文件夹的转移,但是查过之后,没有这个方法,所有还是自己写好了。以下是设计的原本:

using System;
using System.IO;

static class MainClass
{
    static void Main(string[] args)
    {
        DirectoryInfo sourceDir = new DirectoryInfo("c:\\a");
        DirectoryInfo destinationDir = new DirectoryInfo("c:\\b");

        CopyDirectory(sourceDir, destinationDir);

    }

    static void CopyDirectory(DirectoryInfo source, DirectoryInfo destination)
    {
        if (!destination.Exists)
        {
            destination.Create();
        }

        // Copy all files.
        FileInfo[] files = source.GetFiles();
        foreach (FileInfo file in files)
        {
            file.CopyTo(Path.Combine(destination.FullName, 
                file.Name));
        }

        // Process subdirectories.
        DirectoryInfo[] dirs = source.GetDirectories();
        foreach (DirectoryInfo dir in dirs)
        {
            // Get destination directory.
            string destinationDir = Path.Combine(destination.FullName, dir.Name);

            // Call CopyDirectory() recursively.
            CopyDirectory(dir, new DirectoryInfo(destinationDir));
        }
    }
}

以上主要是思路、方法和相关的设计原本,没有直接复制自己的代码。想学习就自己编吧!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值