📜  C# 复制目录 - C# (1)

📅  最后修改于: 2023-12-03 14:39:45.859000             🧑  作者: Mango

C# 复制目录

在C#中复制目录并不是一项非常直接的任务,但仍然是一个容易实现的任务。本文将介绍如何使用C#代码来复制整个目录。

步骤
  1. 创建一个名为CopyDirectory的方法,并传入两个参数:源目录和目标目录。
private static void CopyDirectory(string sourceDir, string targetDir)
{
    // code goes here
}
  1. 检查目标目录是否存在,并根据需要创建它。
if (!Directory.Exists(targetDir))
{
    Directory.CreateDirectory(targetDir);
}
  1. 获取源目录中的文件列表并循环遍历每一个文件。
string[] files = Directory.GetFiles(sourceDir);

foreach (string file in files)
{
    // code goes here
}
  1. 使用Path.Combine方法获取目标文件路径,并将源文件复制到目标文件。
string fileName = Path.GetFileName(file);
string destFile = Path.Combine(targetDir, fileName);
File.Copy(file, destFile, true);
  1. 获取源目录中的子目录列表并循环遍历每一个子目录。
string[] directories = Directory.GetDirectories(sourceDir);

foreach (string directory in directories)
{
    // code goes here
}
  1. 使用Path.Combine方法获取目标目录路径,并将源子目录复制到目标子目录。
string dirName = Path.GetFileName(directory);
string destDir = Path.Combine(targetDir, dirName);
CopyDirectory(directory, destDir);
  1. 最终,将CopyDirectory方法作为入口点,传入源目录和目标目录,并调用该方法。
string sourceDir = @"C:\Users\JohnDoe\Documents\Source";
string targetDir = @"C:\Users\JohnDoe\Documents\Target";

CopyDirectory(sourceDir, targetDir);
完整代码
using System.IO;

namespace CopyDirectoryExample
{
    class Program
    {
        static void Main(string[] args)
        {
            string sourceDir = @"C:\Users\JohnDoe\Documents\Source";
            string targetDir = @"C:\Users\JohnDoe\Documents\Target";

            CopyDirectory(sourceDir, targetDir);  
        }

        private static void CopyDirectory(string sourceDir, string targetDir)
        {
            if (!Directory.Exists(targetDir))
            {
                Directory.CreateDirectory(targetDir);
            }

            string[] files = Directory.GetFiles(sourceDir);

            foreach (string file in files)
            {
                string fileName = Path.GetFileName(file);
                string destFile = Path.Combine(targetDir, fileName);
                File.Copy(file, destFile, true);
            }

            string[] directories = Directory.GetDirectories(sourceDir);

            foreach (string directory in directories)
            {
                string dirName = Path.GetFileName(directory);
                string destDir = Path.Combine(targetDir, dirName);
                CopyDirectory(directory, destDir);
            }
        }
    }
}

以上就是如何在C#中复制目录的完整教程。