代码之家  ›  专栏  ›  技术社区  ›  Andreas Brinck

SHFileOperation创建空目录而不是文件

  •  2
  • Andreas Brinck  · 技术社区  · 15 年前

    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);
    

    问题是,我们没有得到SomeName.jpg在SomeOtherDirectory中,名为SomeOtherDirectory的空目录\SomeName.jpg有什么线索吗?

    1 回复  |  直到 15 年前
        1
  •  1
  •   CB Bailey    15 年前

    为了 FO_COPY FO_MOVE pTo 委员会成员 SHFILEOPSTRUCT 必须是位置,即目录,而不是目标文件名。目录不允许存在,在这种情况下,即使它看起来像文件名,也会创建它。

    你要么就指定 "C:\\SomeOtherDiretory\0" 或使用 FO_RENAME .

    至于为什么不创建文件,是否检查了返回值?