端くれプログラマの備忘録 C# [C#] フォルダをコピーする

[C#] フォルダをコピーする

あるディレクトリを別のディレクトリにサブディレクトリを含めてコピーする。

using System.IO;
 
bool CopyDir(string srcDir, string dstDir)
{
    try
    {
        // If destination directory doesn't exist, creates it
        if (!Directory.Exists(dstDir))
        {
            Directory.CreateDirectory(dstDir);
            File.SetAttributes(dstDir, File.GetAttributes(srcDir)); // copies attributes
        }
        // Copies files in source directory.
        string[] files = Directory.GetFiles(srcDir);
        foreach (string file in files)
        {
            string file2 = Path.Combine(dstDir, Path.GetFileName(file));
            File.Copy(file, file2, true/*override*/);
        }
        // Copies directories in source directory (call recursively)
        string[] dirs = Directory.GetDirectories(srcDir);
        foreach (string dir in dirs)
        {
            string dir2 = Path.Combine(dstDir, Path.GetFileName(dir));
            if (!CopyDirectory(dir, dir2))
                return false;
        }
    }
    catch (Exception ex)
    {
        Trace.WriteLine(ex.Message);
        return false;
    }
    return true;
}