2012-05-31 33 views
1

我有這樣的代碼在C++中刪除目錄,其中包括在它的文件中刪除:功能以刪除目錄後,才調試完成C++

void* hFind = INVALID_HANDLE_VALUE; 
     WIN32_FIND_DATA ffd; 

     hFind = FindFirstFile((fullpath+"\\" + _docname + "\\"+"*").c_str(), &ffd); 

     do //delete all the files in the directory 
     { 
      // check if it is a file 
      if (!(ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) 
      { 
       string s = (fullpath+_docname+"\\").append(ffd.cFileName); 
       remove(s.c_str()); 
      } 
     } 
     while (FindNextFile(hFind, &ffd) != 0); 
     removeDirectory(fullpath+"\\" + _docname);  
     FindClose(hFind); 

的問題是 - 該目錄實際刪除後,才關閉dubugger。 調試時,該目錄無法訪問,但仍然存在,這使我很煩惱。 你知道我該如何解決它,以tottaly刪除文件夾?

+0

你不應該刪除該目錄之前關閉找到目錄之前關閉句柄? – Mat

+0

我試過了,它沒有奏效......任何其他想法? –

+1

你在'調試'時意味着什麼? – stijn

回答

4

交換的最後兩行可能會解決這個問題:刪除

FindClose(hFind); 
removeDirectory(fullpath + "\\" + _docname);  
+0

它刪除目錄 - 使其無法訪問 - 但它仍然存在..我不知道如何解決它.. –

+2

奇怪..文檔(http:///msdn.microsoft.com/en-us/library/windows/desktop/aa365488(v=vs.85).aspx)清楚地表示:「RemoveDirectory函數標記要刪除的目錄關閉。因此,該目錄不會被刪除,直到該目錄的最後一個句柄是關閉的「(也是」遞歸刪除目錄中的文件,使用'SHFileOperation'函數。「所以我會試試這個試試 – stijn

+0

感謝提示,我不得不看看整個項目,以查看文件是否在另一個地方打開。我關閉了它,現在它工作。 –