我正在尝试使用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的空目录,是否有任何线索?
答案 0 :(得分:1)
对于FO_COPY
和FO_MOVE
操作,pTo
的{{1}}成员必须是位置,即目录,而不是目标文件名。允许该目录不存在,在这种情况下,即使它看起来像文件名,也会创建它。
您应该只指定SHFILEOPSTRUCT
或使用"C:\\SomeOtherDiretory\0"
。
至于为什么没有创建你的文件,你检查了返回值吗?