https://mp.weixin.qq.com/s/KL_vyRoCf-m4tEmdGZVjhg

概述:在C#中,实现复制目录的基础功能涉及使用Directory和File类,而高级功能使用了更灵活的DirectoryInfo和FileInfo类,提高性能和扩展性。

基础功能实现:
以下是基础功能实现,用于在C#中复制目录的全部内容到另一个目录。


using System;
using System.IO;

class Program
{
    static void Main()
    {
        string sourceDirectory = @"C:\SourceDirectory";
        string destinationDirectory = @"C:\DestinationDirectory";

        CopyDirectory(sourceDirectory, destinationDirectory);

        Console.WriteLine("基础功能:目录复制完成。");
    }

    static void CopyDirectory(string sourceDir, string destDir)
    {
        // 检查源目录是否存在
        if (!Directory.Exists(sourceDir))
        {
            Console.WriteLine("源目录不存在。");
            return;
        }

        // 如果目标目录不存在,则创建
        if (!Directory.Exists(destDir))
        {
            Directory.CreateDirectory(destDir);
        }

        // 获取源目录中的所有文件和子目录
        string[] files = Directory.GetFiles(sourceDir);
        string[] subdirectories = Directory.GetDirectories(sourceDir);

        // 复制文件
        foreach (string file in files)
        {
            string destFile = Path.Combine(destDir, Path.GetFileName(file));
            File.Copy(file, destFile);
        }

        // 递归复制子目录
        foreach (string subdirectory in subdirectories)
        {
            string destSubdirectory = Path.Combine(destDir, Path.GetFileName(subdirectory));
            CopyDirectory(subdirectory, destSubdirectory);
        }
    }
}

高级功能实现:
以下是高级功能实现,使用DirectoryInfo和FileInfo类提高性能和灵活性。


using System;
using System.IO;

class Program
{
    static void Main()
    {
        string sourceDirectory = @"C:\SourceDirectory";
        string destinationDirectory = @"C:\DestinationDirectory";

        CopyDirectoryAdvanced(sourceDirectory, destinationDirectory);

        Console.WriteLine("高级功能:目录复制完成。");
    }

    static void CopyDirectoryAdvanced(string sourceDir, string destDir)
    {
        DirectoryInfo sourceDirectory = new DirectoryInfo(sourceDir);

        // 检查源目录是否存在
        if (!sourceDirectory.Exists)
        {
            Console.WriteLine("源目录不存在。");
            return;
        }

        // 如果目标目录不存在,则创建
        if (!Directory.Exists(destDir))
        {
            Directory.CreateDirectory(destDir);
        }

        // 获取源目录中的所有文件和子目录
        FileInfo[] files = sourceDirectory.GetFiles();
        DirectoryInfo[] subdirectories = sourceDirectory.GetDirectories();

        // 复制文件
        foreach (FileInfo file in files)
        {
            string destFile = Path.Combine(destDir, file.Name);
            file.CopyTo(destFile, true);
        }

        // 递归复制子目录
        foreach (DirectoryInfo subdirectory in subdirectories)
        {
            string destSubdirectory = Path.Combine(destDir, subdirectory.Name);
            CopyDirectoryAdvanced(subdirectory.FullName, destSubdirectory);
        }
    }
}

基础功能实现原理:

检查源目录是否存在,不存在则退出。

如果目标目录不存在,创建目标目录。

获取源目录中的所有文件和子目录。

遍历文件,将每个文件复制到目标目录。

递归调用自身,复制每个子目录及其内容。

高级功能实现原理:

使用DirectoryInfo代替Directory,提供更多操作。

使用FileInfo代替File,提供更多文件操作。

递归时直接使用DirectoryInfo.GetDirectories和DirectoryInfo.GetFiles,避免多次调用Directory.GetDirectories和Directory.GetFiles。

添加了CopyTo方法,提高性能。

文档更新时间: 2024-04-12 06:49   作者:admin