MoveFileEx设置了MOVEFILE_COPY_ALLOWED标志

时间:2012-05-30 12:33:44

标签: c++ file

因此,MoveFileEx的msdn页面指出MOVEFILE_COPY_ALLOWED:

如果要将文件移动到其他卷,则该函数使用CopyFile和DeleteFile函数模拟移动。 如果文件已成功复制到其他卷并且无法删除原始文件,则该函数会成功,并保持源文件不变。

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

我正在执行上述操作,但文件正在从旧位置删除。我唯一想到的是,音量意味着与我上面说的不同。

1 个答案:

答案 0 :(得分:1)

Volume表示系统上的其他驱动器(分区),例如从C:D:,或从本地驱动器到远程驱动器(反之亦然)。< / p>

如果您要复制到相同的卷(例如,从C:\Test\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来移动文件。

如果您不想删除该文件,请不要致电MoveFileMoveFileEx;请改用CopyFile,这是您显然想做的事情。

相关问题