【问题标题】:Delete temporary folder's contents删除临时文件夹的内容
【发布时间】:2012-10-22 09:45:38
【问题描述】:

我的程序使用此代码删除其临时文件夹:

    // ...
    if (!RemoveDirectory(L"C:\\MyTemp"))
        return false;

    if (!CreateDirectory(L"C:\\MyTemp", NULL))
        return false;
    else
        return true;
    // ...

但是,实际上我必须删除 temp 的内容(其中的子文件夹和文件),并且在删除某些文件时程序可能正在使用这些文件。如何以更好的形式编写此代码?我很感激你的小代码示例。

【问题讨论】:

  • 如果您的程序使用文件并且您尝试删除它们,我认为您的架构存在严重问题。
  • 顺便说一句:假设每个人的分区都映射到他们的根驱动器是 C: 的位置并不总是好的。例如,我的 XP 分区是 D:,我的 Win 7 分区是 E:,我的 C: 盘是额外空间。所以为我运行这个程序不会按照指示进行。
  • @alestanis:除非代码最初是为 Posix 编写的,在这种情况下,在使用文件时删除文件是可行的,有时是完全合理的。在 Posix 上“删除”文件只是取消链接文件的一个名称,因此其他名称和具有打开文件处理程序的程序根本不会受到影响。
  • @alestanis:程序有多个临时文件,它必须删除不使用的文件。 M4rc:为学习目的而自行编程,目前我的电脑中有“C:\\MyTemp”!感谢您的理解。伙计们,我只想删除这些文件!

标签: c++ visual-studio-2008 delete-file directory


【解决方案1】:

非便携式解决方案是SHFileOperation() 来自<Shellapi.h>。使用的结构包含一个fAnyOperationsAborted 成员,它会告诉您是否有任何文件无法删除。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-16
    • 2014-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多