这两个功能有什么区别?
3 回答
DeleteFile
是一个低级函数,仅删除 Windows 支持的文件系统和文件共享上的文件。IFileOperation::DeleteItem
删除shell 命名空间中的项目。
DeleteItem 理论上可用于删除控制面板项目、ftp 文件/文件夹以及位于 shell 命名空间中并具有该SFGAO_CANDELETE
集合的任何其他内容。如果IShellItem
传递给 DeleteItem 的是普通文件系统上的文件,那么DeleteFile
最终将用于删除该文件。
shell 命名空间模型自 Windows 95(IShellFolder
和朋友)以来就存在,但 IFileOperation 仅存在于 Vista 和更高版本中,并且是添加到这些系统的新 shell 复制引擎的一部分。
DeleteFile 是 WinAPI 的较旧组件,通常在较旧的系统中更受支持。
IFileOperation::DeleteItem 是一种较新的方法(可能在下游调用 DeleteFile),用于与标准 WinAPI 不同的 API 生态系统集成。
IFileOperation 基础比 DeleteFile(更像是一个“原子”操作)具有更大的灵活性和面向对象的设计。在删除文件方面,它们在行为上基本相同。
IFileOperation::DeleteItem 允许您提供有关操作的反馈和进度。而 DeleteFile 没有给出反馈,只是给出了操作的结果。