フォルダーごとコピー

こんな事するとひどい事になるのでやめてください。
DirectoryCopy("C:\\","d:\\");

ディレクトリーツリーをたどって、全部コピーするコード。
最近のだと、命令で一発でできそうだけどリカーシブルコールの練習に書いてみました。
単純に、だーっとコーディングすると、階層分繰り返せばいいんですけど、再帰呼び出しをつかうと、無制限に階層を増やせます。
作ったことないけど、オセロとかの次の手、次の手・・・って感じのプログラムにもつかえそう。

アンコちゃんの設定フォルダーを変更したときに、中身を移行してくれる仕組みに使用されます。
といっても、見た目じゃわかりませんけどね。

        void DirectoryCopy(string srcPath,string dstPath)
        {
            //コピー先フォルダー作成
            if (!System.IO.Directory.Exists(dstPath))
                System.IO.Directory.CreateDirectory(dstPath);

            //サブディレクトリーが存在する間
            string[] subdir = System.IO.Directory.GetDirectories(srcPath);
            foreach (string path in subdir)
            {
                //dstpathも作成
                System.IO.DirectoryInfo fn = new System.IO.DirectoryInfo(path);
                DirectoryCopy(path, dstPath + "\\" + fn.Name);
            }
            //ファイルのコピー
            string[] files = System.IO.Directory.GetFiles(srcPath);
            foreach(string file in files)
            {
                System.IO.FileInfo fi =new System.IO.FileInfo(file);
                System.IO.File.Copy(file, dstPath + "\\" + fi.Name);
            }
        }