当前位置:  开发笔记 > 开发工具 > 正文

用于删除文件夹的Win32 API函数是什么?

如何解决《用于删除文件夹的Win32API函数是什么?》经验,为你挑选了4个好方法。

用于以编程方式删除文件和文件夹的Win32 API是什么?

编辑

我正在寻找DeleteFile和RemoveDirectory.但是,对于这个项目,我最终使用SHFileOperation.我发现CodeGuru 的示例代码很有帮助.



1> hatcat..:

有两种方法可以解决这个问题.一种是通过文件服务(使用DeleteFile和RemoveDirectory等命令),另一种是通过Windows Shell(使用SHFileOperation).如果要删除非空目录或者想要浏览器样式反馈(例如,使用飞行文件的进度对话框),建议使用后者.最快的方法是创建一个SHFILEOPSTRUCT,初始化它并调用SHFileOperation,因此:

void silently_remove_directory(LPCTSTR dir) // Fully qualified name of the directory being deleted, without trailing backslash
{
    SHFILEOPSTRUCT file_op = {
        NULL,
        FO_DELETE,
        dir,
        "",
        FOF_NOCONFIRMATION |
        FOF_NOERRORUI |
        FOF_SILENT,
        false,
        0,
        "" };
    SHFileOperation(&file_op);
}

这会以静默方式删除整个目录.您可以通过改变SHFILEOPSTRUCT初始化来添加反馈和提示 - 请阅读它.


我尝试过这个并没有用.原因 - 参数"dir"必须是**双重终止**.修好后,它起作用了.请参阅http://msdn.microsoft.com/en-us/library/bb759795%28v=VS.85%29.aspx.

2> itsmatt..:

我想你想要DeleteFile和RemoveDirectory



3> Mark Lakata..:

请参阅uvgroovy上面的评论.在'dir'字段的末尾需要2个空值.

int silently_remove_directory(LPCTSTR dir) // Fully qualified name of the directory being   deleted,   without trailing backslash
{
  int len = strlen(dir) + 2; // required to set 2 nulls at end of argument to SHFileOperation.
  char* tempdir = (char*) malloc(len);
  memset(tempdir,0,len);
  strcpy(tempdir,dir);

  SHFILEOPSTRUCT file_op = {
    NULL,
    FO_DELETE,
    tempdir,
    "",
    FOF_NOCONFIRMATION |
    FOF_NOERRORUI |
    FOF_SILENT,
    false,
    0,
    "" };
  int ret = SHFileOperation(&file_op);
  free(tempdir);
  return ret; // returns 0 on success, non zero on failure.
}



4> liggett78..:

我相信DeleteFile不会将文件发送到回收站.此外,RemoveDirectory只删除空目录.SHFileOperation可以让您最大程度地控制删除内容和删除内容,并在需要时显示标准Windows UI对话框(例如"准备删除等").

推荐阅读
mobiledu2402851377
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有