SHFileOperation创建空目录而不是文件

时间:2010-08-16 08:04:51

标签: c++ winapi

我正在尝试使用SHFileOperation将文件从一个位置复制到另一个位置:

SHFILEOPSTRUCT fileop;
fileop.hwnd = 0;
fileop.wFunc = FO_COPY;
fileop.pFrom = L"C:\\SomeDirectory\\SomeName.jpg\0";
fileop.pTo = L"C:\\SomeOtherDirectory\\SomeName.jpg\0";
fileop.fFlags = FOF_NOCONFIRMATION | FOF_NOERRORUI | FOF_SILENT;
fileop.fAnyOperationsAborted = FALSE;
fileop.hNameMappings = 0;
fileop.lpszProgressTitle = 0;
SHFileOperation(&fileop);

问题是,不是在SomeOtherDirectory中获取SomeName.jpg的副本,而是创建一个名为SomeOtherDirectory \ SomeName.jpg的空目录,是否有任何线索?

1 个答案:

答案 0 :(得分:1)

对于FO_COPYFO_MOVE操作,pTo的{​​{1}}成员必须是位置,即目录,而不是目标文件名。允许该目录不存在,在这种情况下,即使它看起来像文件名,也会创建它。

您应该只指定SHFILEOPSTRUCT或使用"C:\\SomeOtherDiretory\0"

至于为什么没有创建你的文件,你检查了返回值吗?