无法在C#中重命名目录,但要手动重命名

问题描述 投票:2回答:3

我正在使用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
            }
        }
    }
}

您可以看到我刚刚输入了方法。我以前从未接触过程序中的目录。还有重命名目录的另一种方法吗?

c# directory rename move
3个回答
3
投票
从介绍到流程浏览器:

曾经想知道哪个程序打开了特定的文件或目录?现在您可以找出答案。 Process Explorer向您显示有关已打开或加载哪些句柄和DLL的信息。

可能还需要确保没有其他东西可以将文件从该目录复制到该目录中-例如,投寄箱。最近我遇到一个问题,Visual Studio由于文件锁定而将停止调试-最终,它在临时锁定文件的驱动器上建立了索引。进程浏览器仅部分帮助了它,因为它表明“系统”具有文件锁定,而没有其他应用程序。


0
投票

0
投票
© www.soinside.com 2019 - 2024. All rights reserved.