public static void CopyDirectory2(string sourceDirPath, string saveDirPath)
{
try
{
LogSystem.Log("++++ copy: " + sourceDirPath + " -- to : " + saveDirPath);
if (string.IsNullOrEmpty(sourceDirPath) || string.IsNullOrEmpty(saveDirPath))
{
LogSystem.Log("++++ Path is null.sourceP: " + sourceDirPath + " -- saveDP: " + saveDirPath);
return;
}
sourceDirPath = sourceDirPath.Replace('\\', '/');
saveDirPath = saveDirPath.Replace('\\', '/');
//如果指定的存储路径不存在,则创建该存储路径
if (!Directory.Exists(saveDirPath))
{
//创建
Directory.CreateDirectory(saveDirPath);
}
//获取源路径文件的名称
string[] files = Directory.GetFiles(sourceDirPath);
//遍历子文件夹的所有文件。
foreach (string file in files)
{
string pFilePath = saveDirPath + "\\" + Path.GetFileName(file);
pFilePath = pFilePath.Replace('\\', '/');
string unityFile = file.Replace('\\', '/');
if (File.Exists(pFilePath))
{
//continue;
File.Delete(pFilePath);
}
if (!File.Exists(unityFile))
{
LogSystem.Log("++++ " + unityFile + " ; not find");
continue;
}
File.Copy(unityFile, pFilePath, true);
}
string[] dirs = Directory.GetDirectories(sourceDirPath);
//递归,遍历文件夹
foreach (string dir in dirs)
{
CopyDirectory2(dir, saveDirPath + "\\" + Path.GetFileName(dir));
}
}
catch (Exception ex)
{
}
}
本质就是遍历这个文件夹,然后去目标路径下检测,如果是文件夹,就创建一个文件夹,不是文件夹,就复制文件过去。注意路径中的斜杠。
本文深入解析了一个用于在C#中复制整个目录结构的代码片段,包括文件和子目录的递归复制。文章详细介绍了如何处理路径斜杠的差异,确保源目录和目标目录的正确匹配,以及在目标路径不存在时创建新目录的逻辑。
6285

被折叠的 条评论
为什么被折叠?



