0

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

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

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

  1. 我不明白为什么它首先说“文件”。
  2. 另外,目录是空的。它指的是什么文件?
  3. 最后,如何无一例外地重命名目录?

更新:我想我找到了异常的原因,这是因为我试图重命名位于 Google Drive 中的文件/文件夹的文件/文件夹名称。Google Drive 应用程序是使用它的另一个进程!有什么解决方案可以重命名 Google Drive 中的文件夹?但奇怪的是,当我尝试通过 C# 重命名位于 Google Drive 中的文件时,我没有收到此异常。

谢谢!

4

3 回答 3

1

您的文件夹似乎正在被另一个进程使用。尝试关闭使用该文件夹的资源管理器或其他程序。如果没有任何帮助 - 尝试重新启动您的机器。如果这些都无济于事 - 考虑使用Unlocker将文件夹从另一个进程的使用中释放出来。注意,如果重启机器后非系统文件夹被占用,那就很奇怪了

于 2012-08-22T09:35:54.570 回答
0
  1. 它说“文件”是因为底层命令可能对目录和文件都使用通用移动命令,并且本地化错误字符串包含单词文件。
  2. 即使目录是空的,如果您在应用程序中“打开”它,它也可以被锁定以进行任何编辑(您是否在目录中打开了资源管理器 Windows,命令提示符当前目录是否设置为您要移动的目录/删除)?
  3. 不幸的是,除非您想开始以编程方式杀死有问题的进程,否则您无能为力。

您可以使用 Process Explorer 查找锁定该文件夹的进程。有关详细信息,请参阅http://windowsxp.mvps.org/processlock.htm

于 2012-08-22T09:36:55.413 回答
0

1 验证 newPath 已经不存在

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

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

于 2012-08-22T09:37:01.403 回答