zoukankan      html  css  js  c++  java
  • Win32 删除非空目录

    DeleteFile();  //这是删除文件的win32 API
    RemoveFile();  //这是删除空目录的win32 API(注意,如果目录不为空的话,这个函数将执行失败)

    如果目录不为空的话,我知道的有两种方法删除:

    1.调用命令行
    system("rmdir /s /q dirname");  //dirname是要删除的目录名称,这种方式,在使用MFC程序的时候出闪过一个CMD的窗口
    /s是级联删除  /q 是不提示(在命令行下操作的话,如果不加这个开关,会有提示确认是否删除目录,而在程序中不允许停下)

    2.使用win32 API
     //删除当前目录下的tempDir目录(子目录也将一并删除)
     SHFILEOPSTRUCT FileOp;
     FileOp.fFlags = FOF_NOCONFIRMATION;
     FileOp.hNameMappings = NULL;
     FileOp.hwnd = NULL;
     FileOp.lpszProgressTitle = NULL;
     FileOp.pFrom = ".\\tempDir";
     FileOp.pTo = NULL;
     FileOp.wFunc = FO_DELETE;
     SHFileOperation(&FileOp);

    此处有一个地方要留心一下,就是FileOp.pFrom这个参数,它使用的字符串一定是要'\0'结尾的,这个地方使用".\\tempDir",这个字符串默认的结束字符就是'\0',所以如果存在这个目录或者文件的话,一定可以将其删除,如果像下面这样写的话就会出错:
    std::string delPath = ".\\tempDir";
    ...
    FileOp.pFrom = delPath.c_str();  // 此时字符串没有以'\0'结尾,所以删除的时候会出错

  • 相关阅读:
    https://scrapingclub.com/exercise/detail_sign/
    https://scrapingclub.com/exercise/basic_captcha/
    https://scrapingclub.com/exercise/basic_login/
    344. 反转字符串(简单)
    142. 环形链表 II(中等)
    面试题02.07.链表相交
    19. 删除链表的倒数第 N 个结点
    24.两两交换链表中的节点
    206.反转链表(简单)
    707.设计链表
  • 原文地址:https://www.cnblogs.com/emyueguang/p/2034516.html
Copyright © 2011-2022 走看看