我想模拟UNIX rename()
函数的特定情况来重命名目录。其MAN页面指定:
oldpath可以指定目录。在这种情况下,newpath必须不存在,或者必须指定一个空目录。
我想模拟最后一个案例:
newpath存在且为空。
所以我创建了目录foo_dir
和bar_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()
。