首页 > 代码库 > C++ 删除一个文件目录下的所有文件以及目录

C++ 删除一个文件目录下的所有文件以及目录

 1 //删除一个文件目录下的所有文件,并删除当前文件夹 chrDirName = _T("c:\\123"); 2 BOOL CIVMSvrInfo::ReleaseDirectory(CString chrDirName) 3 { 4     BOOL bRemove = DoRemoveDirectory(chrDirName); 5     if (bRemove) 6         ::RemoveDirectory(chrDirName); 7     else 8         return FALSE; 9 10     return TRUE;11 12 } //end of CIVMSvrInfo::ReleaseDirectory()13 14 //删除一个文件目录结构下的所有文件(不删除当前文件夹)15 BOOL CIVMSvrInfo::DoRemoveDirectory(CString chrDirName)16 {17     CString strDirName = chrDirName;18 19     BOOL result;20     HANDLE Handle;21     WIN32_FIND_DATA fData;22     CString strTemp;23         24     Handle = FindFirstFile(strDirName + "\\*.*", &fData);25 26     if (Handle == INVALID_HANDLE_VALUE)27         return FALSE;28 29     do {30         if ( fData.cFileName[0] == . )31             continue;32 33         if (fData.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY) {34             if (strDirName[strDirName.GetLength()-1] != \\){35                 TCHAR chA[MAX_PATH];36                 CString strA = strDirName+\\+ fData.cFileName;37                 lstrcpy(chA, strA);38                 DoRemoveDirectory(chA);39             }40             else{41                 TCHAR chB[MAX_PATH];42                 CString strB = strDirName + fData.cFileName;43                 lstrcpy(chB, strB);44                 DoRemoveDirectory(chB);45             }46 47             strTemp = strDirName + "\\" + fData.cFileName;48 49             SetFileAttributes(strTemp, ~FILE_ATTRIBUTE_READONLY);50             if (!RemoveDirectory(strTemp))51                 result = FALSE;52             else53                 result = TRUE;54         }55         else56         {57             strTemp = strDirName + "\\" + fData.cFileName;58             BOOL bl = SetFileAttributes(strTemp, ~FILE_ATTRIBUTE_READONLY);59 60             if (!DeleteFile(strTemp))61                 result = FALSE;62             else63                 result = TRUE;64         }65 66     }while(FindNextFile(Handle,&fData));67 68     if (Handle)69         FindClose(Handle);70     71     return result;72 73 }    // end of BOOL PreRemoveDirectory(CString DirName)

 

C++ 删除一个文件目录下的所有文件以及目录