简介本文介绍一个C++代码片段:如何在C++中删除一个文件目录下的所有文件及目录,感兴趣的朋友可以参考一下。
删除一个文件目录下的所有文件及目录
// 删除一个文件目录下的所有文件以及目录
BOOL DoRemoveDirectory(CString chrDirName)
{
CString strDirName = chrDirName;
BOOL result;
HANDLE Handle;
WIN32_FIND_DATA fData;
CString strTemp;
DWORD errorcode;
Handle = FindFirstFile(strDirName + L"\\*.*", &fData);
if (Handle == INVALID_HANDLE_VALUE)
{
return FALSE;
}
do {
errorcode = GetLastError();
if (fData.cFileName[0] == '.')
{
continue;
}
if (fData.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY)
{
if (strDirName[strDirName.GetLength() - 1] != '\\')
{
TCHAR chA[MAX_PATH];
CString strA = strDirName + '\\' + fData.cFileName;
lstrcpy(chA, strA);
DoRemoveDirectory(chA);
}
else
{
TCHAR chB[MAX_PATH];
CString strB = strDirName + fData.cFileName;
lstrcpy(chB, strB);
DoRemoveDirectory(chB);
}
strTemp = strDirName + L"\\" + fData.cFileName;
SetFileAttributes(strTemp, ~FILE_ATTRIBUTE_READONLY);
if (!RemoveDirectory(strTemp))
{
result = FALSE;
}
else
{
result = TRUE;
}
}
else
{
strTemp = strDirName + L"\\" + fData.cFileName;
BOOL bl = SetFileAttributes(strTemp, ~FILE_ATTRIBUTE_READONLY);
if (!DeleteFile(strTemp))
{
result = FALSE;
}
else
{
result = TRUE;
}
}
} while (FindNextFile(Handle, &fData));
errorcode = GetLastError();
if (errorcode == ERROR_NO_MORE_FILES)// 空目录
{
::RemoveDirectory(strDirName);
result = TRUE;
}
if (Handle)
{
FindClose(Handle);
}
return result;
}
本文向大家介绍一个C++实战项目:C++实现雪花算法(SnowFlake)产生唯一ID,主要涉及雪花算法、算法知识等,具有一定的C++实战价值,感兴趣的朋友可以参考一下。
本文介绍C++实现C++实现8种排序算法,主要包括冒泡排序、插入排序、二分插入排序、希尔排序、直接选择排序、堆排序、归并排序、快速排序,直接上代码,感兴趣的朋友可以参考一下。
本文介绍C++实现线程同步的四种方式:事件对象、互斥对象、临界区、信号量,感兴趣的朋友可以参考一下。
本文介绍C++内存泄漏的检测与定位方法,感兴趣的朋友可以参考一下。
本文向大家介绍一个C++实战项目:C++实现一个多线程安全的队列容器模板类,主要涉及C++模板类的使用、互斥体实现多线程安全、队列数据结构等知识,具有一定的C++实战价值,感兴趣的朋友可以参考一下。
本文实现C++中UTF-8与GB2312相互转换,感兴趣的朋友可以参考一下。