MFC剔除某个文件夹下的所有内容
MFC删除某个文件夹下的所有内容
MFC删除某个文件夹下的所有内容,但不删除该文件夹。
我现在用如下函数,递归删除该文件夹及其中的内容,然后调用CreateDirectory重新创建该文件夹。
有什么更好的办法吗?谢谢大家。
------解决方案--------------------
貌似没有更好的办法了。静等高手出现
------解决方案--------------------
怎么回事??重发一遍
------解决方案--------------------
把这就话去掉不就行了
------解决方案--------------------
我的文件处理类中的一个处理函数:
------解决方案--------------------
RemoveDirectory(%%1);
CreateDirectory(%%1,NULL);
------解决方案--------------------
MFC删除某个文件夹下的所有内容,但不删除该文件夹。
我现在用如下函数,递归删除该文件夹及其中的内容,然后调用CreateDirectory重新创建该文件夹。
有什么更好的办法吗?谢谢大家。
void CDirectory::DeleteDirectory(const CString &strPath)
{
CFileFind tempFind;
TCHAR sTempFileFind[MAX_PATH] = { 0 };
wsprintf(sTempFileFind, _T("%s\\*.*"), strPath);
BOOL IsFinded = tempFind.FindFile(sTempFileFind);
while (IsFinded)
{
IsFinded = tempFind.FindNextFile();
if (!tempFind.IsDots())
{
TCHAR sFoundFileName[200] = { 0 };
_tcscpy(sFoundFileName, tempFind.GetFileName().GetBuffer(200));
if (tempFind.IsDirectory())
{
TCHAR sTempDir[200] = { 0 };
wsprintf(sTempDir, _T("%s\\%s"),strPath, sFoundFileName);
DeleteDirectory(sTempDir);
}
else
{
TCHAR sTempFileName[200] = { 0 };
wsprintf(sTempFileName, _T("%s\\%s"), strPath, sFoundFileName);
DeleteFile(sTempFileName);
}
}
}
tempFind.Close();
if(!RemoveDirectory(strPath))
return false;
return true;
}
------解决方案--------------------
貌似没有更好的办法了。静等高手出现
------解决方案--------------------
怎么回事??重发一遍
void DeleteDirectory(CString strDir)
{
if(strDir.IsEmpty())
return;
// 首先删除文件及子文件夹
CFileFind ff;
BOOL bFound = ff.FindFile(strDir+L"\\*", 0);
while(bFound)
{
bFound = ff.FindNextFile();
if(ff.GetFileName()=="."
------解决方案--------------------
ff.GetFileName()=="..")
continue;
// 去掉文件(夹)只读等属性
SetFileAttributes(ff.GetFilePath(), FILE_ATTRIBUTE_NORMAL);
if(ff.IsDirectory())
{
// 递归删除子文件夹
DeleteDirectory(ff.GetFilePath());
RemoveDirectory(ff.GetFilePath());
}
else
{
// 删除文件
DeleteFile(ff.GetFilePath());
}
}
ff.Close();
// 然后删除该文件夹
//RemoveDirectory(strDir);
}
------解决方案--------------------
if(!RemoveDirectory(strPath))
return false;
把这就话去掉不就行了
------解决方案--------------------
我的文件处理类中的一个处理函数:
// 删除目录中全部文件
BOOL CFileManage::DeleteAll(CString dirName)
{
CFileFind tempFind;
CString foundFileName;
CString tempFileFind=dirName+_T("*.*");
BOOL IsFinded=(BOOL)tempFind.FindFile(tempFileFind);
while(IsFinded)
{
IsFinded=(BOOL)tempFind.FindNextFile();
if(!tempFind.IsDots())
{
foundFileName=tempFind.GetFileName();
CString tempFileName=dirName+_T("\\")+foundFileName;
DeleteFile(tempFileName); // 删除文件
}
}
tempFind.Close();
return TRUE;
}
------解决方案--------------------
RemoveDirectory(%%1);
CreateDirectory(%%1,NULL);
------解决方案--------------------
SHFILEOPSTRUCT Op;
ZeroMemory(&Op, sizeof(Op)); //删除文件夹
Op.hwnd = NULL;
Op.wFunc = FO_DELETE;
char deletedir [1200];
memset(deletedir,0,1200);
sprintf(deletedir,"c:\\log");
Op.pFrom = deletedir; // 这里放上文件名即可
Op.fFlags = FOF_ALLOWUNDO
------解决方案--------------------
FOF_NOCONFIRMATION;
SHFileOperation(&Op);