This commit is contained in:
limil 2025-11-01 12:09:54 +08:00
parent 358cc33f3a
commit 20f3709ac9

View File

@ -42,26 +42,29 @@ public static class FolderCloner
{
return;
}
foreach (string subDirPath in Directory.GetDirectories(source, "*", SearchOption.AllDirectories))
var queue = new Queue<string>();
queue.Enqueue(source);
while (queue.Count > 0)
{
string newSubDirPath = subDirPath.Replace(source, dest);
Directory.CreateDirectory(newSubDirPath);
}
foreach (string filePath in Directory.GetFiles(source, "*", SearchOption.AllDirectories))
{
string newFilePath = filePath.Replace(source, dest);
string directoryName = Path.GetDirectoryName(newFilePath);
if (!Directory.Exists(directoryName))
{
Directory.CreateDirectory(directoryName);
}
var dir = queue.Dequeue();
try
{
using (File.Create(newFilePath)) { }
foreach (var filePath in Directory.GetFiles(dir))
{
var newFilePath = Path.Combine(dest, Path.GetRelativePath(source, filePath));
using var _ = File.Create(newFilePath);
}
foreach (var dirPath in Directory.GetDirectories(dir))
{
queue.Enqueue(dirPath);
var newDirPath = Path.Combine(dest, Path.GetRelativePath(source, dirPath));
Directory.CreateDirectory(newDirPath);
}
}
catch (Exception ex)
{
Console.WriteLine($"创建文件失败 {newFilePath}: {ex.Message}");
Console.WriteLine($"Clone失败 {ex.Message}");
}
}
}