如果将新文件添加到源文件夹,DirectoryInfo MoveTo将失败

如果将新文件添加到源文件夹,DirectoryInfo MoveTo将失败,directory,windows-explorer,directoryinfo,Directory,Windows Explorer,Directoryinfo,重现此问题的步骤: 创建源文件夹和目标文件夹c:\test\Source, c:\test\Target 在源文件夹下创建子文件夹(TS-123456),并在中创建一些子文件夹和文件 这个子文件夹。这意味着,此路径中将有一些子文件夹和文件c:\test\Source\TS-123456 不要关闭windows资源管理器,只需导航到其他路径,不要关闭 打开源文件夹 在控制台或表单应用程序中运行以下代码: 将出现错误“无法访问路径“c:\test\Source\TS-123456” 否认。” 如果我

重现此问题的步骤:

  • 创建源文件夹和目标文件夹c:\test\Source, c:\test\Target
  • 在源文件夹下创建子文件夹(TS-123456),并在中创建一些子文件夹和文件 这个子文件夹。这意味着,此路径中将有一些子文件夹和文件c:\test\Source\TS-123456
  • 不要关闭windows资源管理器,只需导航到其他路径,不要关闭 打开源文件夹
  • 在控制台或表单应用程序中运行以下代码:
  • 将出现错误“无法访问路径“c:\test\Source\TS-123456” 否认。”
  • 如果我关闭所有打开的文件夹并再次运行代码,则所有内容都将被删除 好的但是如果我在源文件夹c:\test\source\TS-123456下添加/删除一个文件,并且没有关闭 文件夹,只需从源文件夹导航到其他文件夹,然后运行 代码,它将再次失败

  • 请使用另一个驱动器(如d:\尝试使用takeown和icacls命令来获得目录的控制权。请使用另一个驱动器(如d:\尝试使用takeown和icacls命令来获得目录的控制权)来尝试此代码。
    try
    {
        string sourcePath = @"c:\test\Source\TS-123456";
        string targetPath = @"c:\test\Target\TS-123456";
        DirectoryInfo drinfo = new DirectoryInfo(sourcePath);
        drinfo.MoveTo(targetPath);
        MessageBox.show("Move successful.")
    }
    catch(Exception ex)
    {
        MessageBox.show(ex.Message);
    }