我有几个像下面这样的文件夹: 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文件夹。
对不起,我的英语不好。
答案 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会自动为您处理一切