gpt4 book ai didi

c# - 递归到无穷远,还没准备好

转载 作者:太空狗 更新时间:2023-10-30 01:04:16 26 4
gpt4 key购买 nike

所以我一直在构建一个可重用的类,它将处理递归将一个目录复制到另一个目录。文件夹结构是:

  • 根目录(D:\Arrigotti)
  • 来源(C:\inetpub\wwwroot)
  • 目的地(D:\Arrigotti\Backup)
  • 存档(D:\Arrigotti\Archive)

这些是关键区域,为了简单起见,对于示例代码,我将省略一些验证/错误处理。

public static class FileSystem
{
public static void CopyDirectory(string source, string destination)
{
DirectoryInfo directory = new DirectoryInfo(source);
DirectoryInfo[] directories = directory.GetDirectories();
foreach(DirectoryInfo dir in directories)
{
Console.WriteLine(@"Found Directory: {0}", dir.FullName);
if(Directory.Exists(Path.Combine(destination, dir.Name)))
{
Console.WriteLine(@"Attempting to write directory...");
Directory.CreateDirectory(Path.Combine(destination, dir.Name));
Console.WriteLine(@"Created Directory: {0}", dir.Name);
}

CopyDirectory(dir.FullName, Path.Combine(destination, dir.Name));
FileInfo[] files = dir.GetFiles();
foreach(FileInfo file in files)
{
Console.WriteLine(@"Found: {0}", file.FullName);
Console.WriteLine(@"Attempting to copy...");
file.CopyTo(Path.Combine(destination, file.Name), true);
}
}
}
}

我认为这部分非常准确且有效。然而,我的问题源于我的电话。

public static class Backup
{
public static void Save()
{
string[] drives = Directory.GetLogicalDrives();
foreach(string drive in drives)
{
DriveInfo diagnose = new DriveInfo(drive);
if(diagnose.VolumeLabel == @"Backup" && diagnose.DriveType == DriveType.Fixed)
{
CopyDirectory(
ConfigurationManager.AppSettings[@"Source"],
ConfigurationManager.AppSettings[@"Destination"]);
}
}
}
}

代码正在运行,此时看起来一帆风顺,它完成了它正在复制的 100 个网站目录中的 5 个,然后它随机抛出一个异常(为了简单起见,我没有处理错误,但这是错误。)

IOException: The device is not ready.

它随机停止阅读写作

我不完全确定为什么会发生这种情况,任何建议都会很棒。

最佳答案

我建议只使用内置的 FileSystem.CopyDirectory方法,无需自定义代码即可正确处理目录复制。

关于c# - 递归到无穷远,还没准备好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24191101/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com