c#文件移动(文件已经被另一个进程使用)

本文关键字:文件 进程 另一个 移动 | 更新日期: 2023-09-27 17:49:41

我正在把文件从一个文件夹移动到另一个文件夹。如果我想把整个文件夹移动到那个文件夹下的另一个文件夹,我就做不到。但如果我把它移到外面,就没问题了。如何将我的文件夹移动到该文件夹中的文件夹?

给出错误

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

this works fine

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

c#文件移动(文件已经被另一个进程使用)

尝试将"c:'copypath'"转换为"c:'copypath'abc'"将不起作用,因为它没有意义。

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

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

将抛出错误,因为您正在尝试移动其自己的子目录中的目录。这在windows中也会给出错误…

如果你想复制而不是移动,你可以这样做。

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

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

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