-1

因此,MoveFileEx 的 msdn 页面声明了 MOVEFILE_COPY_ALLOWED:

如果要将文件移动到不同的卷,则该函数通过使用 CopyFile 和 DeleteFile 函数来模拟移动。如果文件被成功复制到不同的卷并且无法删除原始文件,则该函数成功保留源文件不变。

现在我的问题是首先,当它说音量时,我认为这只是意味着你的硬盘上的不同位置?按照这个假设,如果我制作了一个只读文件。然后我调用 MoveFileEx 并设置 MOVEFILE_COPY_ALLOWED 标志,它是否应该不只是使用 CopyFile 移动文件。那么当它试图删除文件时它应该会失败,因为 DeleteFile 不能删除只读文件。

我正在执行上述操作,只是文件正在从旧位置删除。我唯一的想法是音量与我上面所说的不同。

4

1 回答 1

1

Volume表示系统上的不同驱动器(分区),例如 fromC:D:,或从本地驱动器到远程驱动器(反之亦然)。

如果您要复制到同一个卷(例如, from C:\Test\to C:\TestTwo\,它们在同一个卷上。

我在文档中没有看到任何说If the file is read-only and therefore unable to be deleted. 我明白If the file is unable to be deleted了,这大概意味着If the file is in use or you don't have proper rights in the source location to delete it。毕竟,您要求通过调用来移动文件MoveFileEx

如果您不想删除文件,请不要调用MoveFileor MoveFileEx; 改为使用CopyFile,这显然是您想要做的。

于 2012-05-30T12:43:07.293 回答