使用Win32 MoveFileEx()为目录模拟UNIX rename()

时间:2017-11-07 13:57:06

标签: unix winapi movefileex

我想模拟UNIX rename()函数的特定情况来重命名目录。其MAN页面指定:

  

oldpath可以指定目录。在这种情况下,newpath必须不存在,或者必须指定一个空目录。

我想模拟最后一个案例:

  

newpath存在且为空。

所以我创建了目录foo_dirbar_dir并调用了MoveFileEx(),以便将foo_dir重命名为bar_dir。这是没有错误管理的代码:

mkdir("foo_dir");
mkdir("bar_dir");
MoveFileEx("foo_dir", "bar_dir", MOVEFILE_REPLACE_EXISTING)

MoveFileEx()总是失败,错误5(访问被拒绝)。我试过MoveFileEx()的其他标志但没有成功。

如果bar_dir存在并且在调用MoveFileEx()之前为空,我必须手动删除吗?还是有另一种解决方案吗?

我还没有尝试ReplaceFile()

0 个答案:

没有答案