当我尝试使用以下代码重命名目录时:
try
{
System.IO.Directory.Move(oldPath, newPath);
}
catch (System.IO.IOException e2)
{
Console.WriteLine(e2.Message);
}
我得到以下异常:进程无法访问该文件,因为另一个进程正在使用该文件。
- 我不明白为什么它一开始就说"文件"
- 此外,该目录为空。它指的是什么文件
- 最后,如何管理重命名目录没有任何例外
更新:我想我找到了异常的原因,这是因为我试图重命名谷歌硬盘中文件/文件夹的文件/文件夹名称。Google Drive应用程序是使用它的另一个进程!有任何重命名Google Drive中文件夹的解决方案吗?但奇怪的是,当我试图通过C#重命名谷歌硬盘中的文件时,我没有得到这个例外。
谢谢!
您的文件夹似乎正被另一个进程使用。请尝试关闭使用该文件夹的资源管理器或其他程序。如果没有任何帮助,请尝试重新启动您的机器。如果这些都无济于事,可以考虑使用Unlocker将文件夹从另一个进程中释放出来。请注意,如果非系统文件夹在机器重新启动后被占用,那将是很奇怪的
- 它说"file"是因为底层命令可能使用目录和文件的通用移动命令以及本地化错误字符串包含单词文件
- 即使一个目录是空的,如果你在应用程序中"打开"了它,它也可以被锁定以进行任何编辑(你是否在目录中打开了资源管理器Windows,命令提示符下的当前目录是否设置为你想要移动/删除的目录)
- 不幸的是,除非您想开始以编程方式杀死有问题的进程,否则您无能为力
您可以使用Process Explorer查找锁定该文件夹的进程。看见http://windowsxp.mvps.org/processlock.htm了解更多信息。
1验证newPath是否已经不存在
http://msdn.microsoft.com/en-us/library/system.io.directory.move.aspx
2验证您的目录是否不包含打开的文件