Win32 刪除非空目錄

Win32 刪除非空目錄

 

DeleteFile();  //這是刪除文件的win32 API

RemoveFile();  //這是刪除空目錄的win32 API(注意,如果目錄不爲空的話,這個函數將執行失敗)

如果目錄不爲空的話,我知道的有兩種方法刪除:

1.調用命令行

system("rmdir /s /q dirname");  //dirname是要刪除的目錄名稱,這種方式,在使用MFC程序的時候出閃過一個CMD的窗口

/s是級聯刪除  /q 是不提示(在命令行下操作的話,如果不加這個開關,會有提示確認是否刪除目錄,而在程序中不允許停下)

2.使用win32 API
 //刪除當前目錄下的tempDir目錄(子目錄也將一併刪除)


 
  1. SHFILEOPSTRUCT FileOp;

  2. FileOp.fFlags = FOF_NOCONFIRMATION;

  3. FileOp.hNameMappings = NULL;

  4. FileOp.hwnd = NULL;

  5. FileOp.lpszProgressTitle = NULL;

  6. FileOp.pFrom = ".\\tempDir";

  7. FileOp.pTo = NULL;

  8. FileOp.wFunc = FO_DELETE;

  9. SHFileOperation(&FileOp);


此處有一個地方要留心一下,就是FileOp.pFrom這個參數,它使用的字符串一定是要'\0'結尾的,這個地方使用".\\tempDir",這個字符串默認的結束字符就是'\0',所以如果存在這個目錄或者文件的話,一定可以將其刪除,如果像下面這樣寫的話就會出錯:


 
  1. std::string delPath = ".\\tempDir";

  2. ...

  3. FileOp.pFrom = delPath.c_str();  // 此時字符串沒有以'\0'結尾,所以刪除的時候會出錯

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章