c#文件移动(文件已被其他进程使用)

时间:2011-04-12 10:04:00

标签: c#

我正在将文件从一个文件夹移动到另一个文件夹。如果我尝试将整个文件夹移动到该特定文件夹中的文件夹,我就无法这样做。但如果我把它移到外面就可以了。如何将文件夹移动到该文件夹​​中的文件夹?

这会产生错误

  if (System.IO.Directory.Exists(PhysicalPath))
 {
      string sourcePath = "c:\\copypath\\";
      string targetPath = "c:\\copypath\\abc\\";
      System.IO.Directory.Move(sourcePath, targetPath);
 }

这很好用

 if (System.IO.Directory.Exists(PhysicalPath))
 {
      string sourcePath = "c:\\copypath\\";
      string targetPath = "c:\\abc\\";
      System.IO.Directory.Move(sourcePath, targetPath);
 }

4 个答案:

答案 0 :(得分:5)

尝试“c:\ copypath \”进入“c:\ copypath \ abc \”将无效,因为它没有意义。

如果您移动copypath文件夹,那么它将不再存在,那么它的目标文件夹(它是一个子文件夹)将如何存在?

您可以将“c:\ copypath \”的所有子文件移动到“c:\ copypath \ abc \”中,这不会导致问题(再次假设您不尝试将abc复制到本身)。

答案 1 :(得分:2)

它抛弃了错误,因为您正在尝试在其自己的子目录中移动目录。这也会在Windows中产生错误......

如果您尝试复制而不是移动,则可以将此作为替代方式...

if (System.IO.Directory.Exists(PhysicalPath))
{
      string sourcePath = "c:\\copypath\\";
      string targetPath = "c:\\copypath\\abc\\";
      System.IO.Directory.Copy(sourcePath, targetPath);
}

答案 2 :(得分:1)

也许您需要移动文件夹中的所有文件,而不是文件夹本身?

答案 3 :(得分:0)

我想源路径将被使用(复制文件),并且因为目标路径是源路径的子文件夹,它可能会给你“当前被另一个进程错误使用”。