目录在C#中重命名异常

时间:2012-08-22 09:30:58

标签: c#

当我尝试使用以下代码重命名目录时:

  try
  {
        System.IO.Directory.Move(oldPath, newPath);
  }
  catch (System.IO.IOException e2)
  {
        Console.WriteLine(e2.Message);
  }

我收到以下异常:进程无法访问该文件,因为它正由另一个进程使用。

  1. 我不明白为什么它首先说“文件”。
  2. 此外,目录为空。它指的是什么文件?
  3. 最后,如何设置重命名目录而没有任何例外?
  4. 更新:我想我找到了异常的原因,这是因为我正在尝试重命名位于Google云端硬盘中的文件/文件夹的文件/文件夹名称。 Google云端硬盘应用是使用它的另一个过程!任何重命名Google云端硬盘中文件夹的解决方案?但奇怪的是,当我尝试通过C#重命名位于Google云端硬盘中的文件时,我没有遇到此异常。

    谢谢!

3 个答案:

答案 0 :(得分:1)

您的文件夹似乎正在被其他进程使用。尝试关闭使用该文件夹的资源管理器或其他程序。如果没有帮助 - 尝试重新启动您的机器。如果这些没有帮助 - 考虑使用Unlocker来释放文件夹以使用其他进程。请注意,如果在重新启动机器后占用非系统文件夹

,那将会很奇怪

答案 1 :(得分:0)

  1. 它说“文件”,因为底层命令可能正在使用 目录和文件的通用移动命令和 本地化错误字符串包含单词file。
  2. 即使目录为空,如果您在应用程序中“打开”它,也可以锁定任何编辑(您是否在目录中打开了资源管理器Windows,命令提示符当前目录是否设置为您想要的目录)移动/删除)?
  3. 不幸的是,除非你想以编程方式开始查杀违规进程,否则你无能为力。
  4. 您可以使用Process Explorer查找锁定该文件夹的进程。有关详细信息,请参阅http://windowsxp.mvps.org/processlock.htm

答案 2 :(得分:0)

1验证newPath是否已存在

http://msdn.microsoft.com/en-us/library/system.io.directory.move.aspx

2确认您的目录不包含已打开的文件