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));
        }
    }
}

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用C#中的System.IO类来复制文件夹到服务器。以下是示例代码: ```csharp using System.IO; string sourceDir = @"C:\SourceFolder"; string destinationDir = @"\\ServerName\DestinationFolder"; // Create the destination directory if it does not exist if (!Directory.Exists(destinationDir)) { Directory.CreateDirectory(destinationDir); } // Get the files from the source directory and copy them to the destination directory foreach (string file in Directory.GetFiles(sourceDir)) { string destFile = Path.Combine(destinationDir, Path.GetFileName(file)); File.Copy(file, destFile, true); } // Get the subdirectories from the source directory and copy them to the destination directory foreach (string subDir in Directory.GetDirectories(sourceDir)) { string destSubDir = Path.Combine(destinationDir, Path.GetFileName(subDir)); Directory.CreateDirectory(destSubDir); CopyDirectory(subDir, destSubDir); } ``` 在示例代码中,`sourceDir`变量表示源文件夹的路径,`destinationDir`变量表示目标服务器上的文件夹路径。首先,我们检查目标文件夹是否存在,如果不存在,则创建一个。然后,我们使用`Directory.GetFiles`方法获取源文件夹中的所有文件,并使用`File.Copy`方法将它们复制到目标文件夹。接下来,我们使用`Directory.GetDirectories`方法获取源文件夹中的所有子文件夹,并使用`Directory.CreateDirectory`方法创建它们在目标文件夹中的对应项。最后,我们递归地调用`CopyDirectory`方法以处理每个子文件夹中的文件和子文件夹。 注意,这个示例代码中没有包括错误处理和异常处理,你可能需要根据你的具体情况添加它们。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值