创建文件夹结构的副本

时间:2018-08-06 11:50:19

标签: c# directory

我有几个像下面这样的文件夹: c:\ temp \ project \ folder1 \ folder2(此目录是动态的,我的意思是可以有更多或更少的文件夹)

我想用每个目录中的其他2个文件夹创建这种结构的阴影,例如

C:\ temp \ projectNew \ folder1(在folder1下,我想再创建2个文件夹,存档文件夹,并且未处理)\ folder2(在文件夹2下,我要再创建2个文件夹,归档文件夹,并且未处理)

这是我的尝试

var sourcePath = @"C:\\temp\\project";
var parentDirectorty = Directory.GetParent(folderPath);

var sourceDirectoryName = folderPath.Replace(Path.GetDirectoryName(folderPath) + Path.DirectorySeparatorChar, "");
var firstDestiDirectoryName = Directory.CreateDirectory($@"{parentDirectorty}\{sourceDirectoryName}new");

但是不知道如何获取其他文件夹名称以及如何在每个目录中创建Archive和NotProcessed文件夹。

对不起,我的英语不好。

2 个答案:

答案 0 :(得分:3)

使用GetDirectories获取给定路径的所有目录和子目录路径。

接下来,对于每个路径,将文件夹添加到其中。

public void XXXX(string path)
{
    string[] directories = Directory.GetDirectories(path, "*", SearchOption.AllDirectories);

    directories.ForEach(x=> AddNewFolders(x));
}

public void AddNewFolders(string path)
{
      var archivedFoldeer = Path.Combine(path,"Archive");
      if (!Directory.Exists(archivedFoldeer )      
           Directory.CreateDirectory(archivedFoldeer );
      //var notProcesssedFoldeer = Path.Combine(path,"NotProcessed");
}

答案 1 :(得分:2)

将所有可用目录转储到字符串数组:

string[] directories = Directory.GetDirectories("C:\\temp\\project", "*", SearchOption.AllDirectories);

然后循环:

for(int i = 0; i<directories.Length; i++)
{
    string newPath = directories[i].Replace("C:\\temp\\project\\", "C:\\temp\\projectNEW\\");
    Directory.CreateDirectory(newPath);
}

幸运的是Directory.CreateDirectory会自动为您处理一切