【发布时间】:2012-06-07 01:32:27
【问题描述】:
我有一个涉及 SHFileOperation 的问题:
SHFILEOPSTRUCT sf2;
memset(&sf2,0,sizeof(sf2));
sf2.hwnd = NULL;
sf2.wFunc = FO_DELETE;
sf2.fFlags = FOF_NOCONFIRMATION;
sf2.pFrom = pathSubDir; // where pathSubDir = ""
//2. Delete temporary files
int n = SHFileOperation(&sf2);
我的期望是,由于 pathSubDir 是“”,它不会删除任何内容,并且我应该得到 n 不等于 0。但是,事实并非如此。我最终得到了 n = 0,这意味着操作已成功完成。我很好奇是否有人可以向我解释为什么我的假设是错误的。谢谢。
【问题讨论】:
-
“什么都不删除”的操作怎么会失败?
-
这样的情况对于 API 设计人员来说真的很难在任何情况下都做正确的事情。有人必须决定:如果用户什么都不删除,我会出错(毕竟,什么都没有被删除,所以从技术上讲它被删除了)。同样,如果调用者要求删除“foo.bar”,但没有“foo.bar”,那是成功还是失败? IMX,Delete() 函数通常在其输入已被删除时更好地假设成功。这意味着函数的客户端需要更少的检查,更多的是由最终用户来选择他们想要删除的内容。
标签: c++ shfileoperation