Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 移动正在使用的文件_C# - Fatal编程技术网

C# 移动正在使用的文件

C# 移动正在使用的文件,c#,C#,我有这个问题:我处理一个文件,需要移动到另一个文件夹后: 其实我是这样做的: FileInfo file = new FileInfo(BW_FullPathPhoto); file.MoveTo(sFolderCopy + "\\" + System.IO.Path.GetFileName(BW_FullPathPhoto)); 但有时给我一个错误,文件当前正在使用,无法移动 我知道如果我重命名正在使用的文件,windows会让我这么做。。。可以在不移动的情况下重命名文件(我认为移动执行的是

我有这个问题:我处理一个文件,需要移动到另一个文件夹后: 其实我是这样做的:

FileInfo file = new FileInfo(BW_FullPathPhoto);
file.MoveTo(sFolderCopy + "\\" + System.IO.Path.GetFileName(BW_FullPathPhoto));
但有时给我一个错误,文件当前正在使用,无法移动

我知道如果我重命名正在使用的文件,windows会让我这么做。。。可以在不移动的情况下重命名文件(我认为移动执行的是复制和删除)

EDIT:将函数放入一个类中,并添加一个返回值,以确定操作系统是否需要重新启动

用法:

try
{
  if (!Pathy.MoveOrReboot(fi,di)) reboot_needed = true;
}
catch (Exception e)
{
  //...
}

无法移动正在使用的文件。确实可以重命名正在使用的文件吗?我非常怀疑这是可能的。我尝试了它,只是为了确保有一个Excel文件,它不允许我将其重命名为“操作无法完成,因为该文件在Microsoft Excel中打开”。重命名和移动是完全不同的事情。没有理由认为在文件打开时能够执行其中一项操作意味着您应该能够执行另一项操作。您可能希望查看
路径。也可以组合
。@ghiboz您只能重命名exe和dll,因为它们是由Windows映射的内存,因此在重命名它们时,它只是将它们的内存句柄更改为重命名的文件(您可以重命名它,但不能删除它)。文件本身未“使用中”(由Windows处理此情况除外)。如果您打开exe文件以便在应用程序中写入并锁定它,它将不允许您重命名它。
try
{
  if (!Pathy.MoveOrReboot(fi,di)) reboot_needed = true;
}
catch (Exception e)
{
  //...
}