我正在使用Directory.Move(oldDir, newDir)
重命名目录。我时不时地得到一个IOException
说“拒绝访问“ oldDir”路径”。但是,如果我右键单击资源管理器中的目录,则可以重命名它而不会出现任何问题。怎么样,如何使它工作?
编辑
程序仍在运行,我得到了异常,可以在光标停在断点上时手动重命名。我还尝试在Directory.Move
处设置断点,成功在资源管理器中重命名了目录(然后再次返回),跨过Directory.Move
并再次出现在catch (IOException)
中。所以我根本看不出为什么我的程序应该锁定目录。肯定还有其他东西。
有什么想法吗?
编辑2
这是我的代码
public bool Copy()
{
string destPathRelease = ThisUser.DestPath + "\\Release";
if (Directory.Exists(destPathRelease))
{
try
{
string newPath = ThisUser.DestPath + '\\' + (string.IsNullOrEmpty(currBuildLabel) ? ("Release" + '_' + DateTime.Now.ToString("yyyyMMdd_HHmmss")) : currBranchName) + '.' + currBuildLabel;
Directory.Move(destPathRelease, newPath);
catch (IOException)
{
// Breakpoint
}
}
}
}
您可以看到我刚刚输入了方法。我以前从未接触过程序中的目录。还有重命名目录的另一种方法吗?
曾经想知道哪个程序打开了特定的文件或目录?现在您可以找出答案。 Process Explorer向您显示有关已打开或加载哪些句柄和DLL的信息。
可能还需要确保没有其他东西可以将文件从该目录复制到该目录中-例如,投寄箱。最近我遇到一个问题,Visual Studio由于文件锁定而将停止调试-最终,它在临时锁定文件的驱动器上建立了索引。进程浏览器仅部分帮助了它,因为它表明“系统”具有文件锁定,而没有其他应用程序。