从路径的一部分创建具有文件夹结构的子目录

时间:2009-06-27 19:25:23

标签: c# directoryinfo

如果我有路径,就像这样:

  

C:\ Windows \ System32下\ INETSRV \ abc.exe

我想在驱动器/路径下创建一个文件夹,例如

  

Z:\东西\

如何创建子目录并选择是否需要从Windows开始,从system32开始或从inetsrv开始的所有内容?顺便说一下,我知道DirectoryInfo有一个名为CreateSubDirectory()的方法。

由于

2 个答案:

答案 0 :(得分:2)

您可以使用System.IO.Directory.CreateDirectory(path)。它是一个静态方法,与DirectoryInfo不同,您需要一个目录实例来调用它。

之后,您可以使用Xcopy或Robocopy复制所有文件和子目录。

答案 1 :(得分:1)

如果要将所有内容从一个目录复制到另一个目录,可以使用以下内容:

using System;
using System.Collections.Generic;
using System.IO;

namespace so_cp__r
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Enter path from where you want to copy:");
            List<DirectoryInfo> fromDirs = new List<DirectoryInfo>();
            DirectoryInfo dir = new FileInfo(Console.ReadLine()).Directory;
            while (dir != null)
            {
                fromDirs.Add(dir);
                dir = dir.Parent;
            }
            for (int i = 0; i < fromDirs.Count; i++)
                Console.WriteLine("{0}: {1}", i, fromDirs[i].FullName);
            Console.WriteLine("From which of these dirs do you want to start?");
            DirectoryInfo fromDir = fromDirs[int.Parse(Console.ReadLine())];
            Console.WriteLine("Where do you want to copy?");
            DirectoryInfo toDir = new DirectoryInfo(Console.ReadLine());
            recursive_copy(fromDir, toDir);
        }

        static void recursive_copy(DirectoryInfo fromDir, DirectoryInfo toDir)
        {
            DirectoryInfo child = toDir.CreateSubdirectory(fromDir.Name);
            foreach (FileInfo file in fromDir.GetFiles())
                file.CopyTo(child.FullName + Path.DirectorySeparatorChar + file.Name);
            foreach (DirectoryInfo dir in fromDir.GetDirectories())
                recursive_copy(dir, child);
        }
    }
}