那位老大知道如果删除一个文件夹下面的所有文件啊?最好有源代码。(分不够再加。)
解决方案 »
- CEdit编辑框 能不能输入一行字符然后换行?哪位大哥帮我解决下这个小问题
- COM线程模型里关于调用CoInitialize()的问题
- 怎么在实现了切分的窗口上添加按钮?
- ado调用oracle数据库存储过程参数传递问题
- 对方用一个send发出来的内容,我方用receive可能收两次吗?(size足够大)
- 如果导出DLL的变量?
- 在VC中如何获得系统中安装的IE的版本号?
- 练手问题:请问怎样在vc中创建圆形button,虽然很简单但我不会,望大侠赐教!
- 我来问吧:已经有的数据库中(orical)增加一图形字段
- Release版本出错怎样调试?
- Ado通过OLE DB访问Access的程序为什么在有的XP系统下出现异常错误?
- 在VC中import用VC开发的ActiveX控件,进行函数调用时会出现“灾难性故障”,请问这是什么原因啊?
BOOL DeleteDirectory(char *DirName)
{
CFileFind tempFind;
char tempFileFind[200];
sprintf(tempFileFind,"%s\\*.*",DirName);
BOOL IsFinded=(BOOL)tempFind.FindFile(tempFileFind);
while(IsFinded)
{
IsFinded=(BOOL)tempFind.FindNextFile();
if(!tempFind.IsDots())
{
char foundFileName[200];
strcpy(foundFileName,tempFind.GetFileName().GetBuffer(200));
if(tempFind.IsDirectory())
{
char tempDir[200];
sprintf(tempDir,"%s\\%s",DirName,foundFileName);
DeleteDirectory(tempDir);
}
else
{
char tempFileName[200];
sprintf(tempFileName,"%s\\%s",DirName,foundFileName);
DeleteFile(tempFileName);
}
}
}
tempFind.Close();
if(!RemovwDirctory(DirName))
{
MessageBox(0,"删除目录失败!","警告信息",MK_OK);
return FALSE;
}
return TRUE;
}
以下一句话是用来删除(E:\复件 www)这个目录的。
::WinExec("cmd /c rmdir/s/q \"e:\\复件 www\"",SW_HIDE);
HWND hwnd;
UINT wFunc;
LPCTSTR pFrom;
LPCTSTR pTo;
FILEOP_FLAGS fFlags;
BOOL fAnyOperationsAborted;
LPVOID hNameMappings;
LPCSTR lpszProgressTitle;
} SHFILEOPSTRUCT, *LPSHFILEOPSTRUCT;int SHFileOperation(
LPSHFILEOPSTRUCT lpFileOp
);调用windows shell 很好用。
用以下的函数。lpName是目录名,bRecover为true表示放到回收站BOOL DeleteEx(LPCTSTR lpName,bool bRecover=false)
{
SHFILEOPSTRUCT fo;
fo.hwnd=NULL;
fo.hNameMappings=NULL;
fo.pFrom=lpName;
fo.pTo=NULL;
fo.wFunc=FO_DELETE;
fo.fFlags=FOF_NOCONFIRMATION|FOF_NOERRORUI|FOF_SILENT;
if(bRecover)
fo.fFlags|=FOF_ALLOWUNDO;
return SHFileOperation(&fo);
}
{
WIN32_FIND_DATA FileData;
HANDLE hSearch;
int ret = -1;
//TCHAR szDirPath[] = "d:\\temp\\test\\"; //"d:\\temp\\test\\";
TCHAR szFoundFile[MAX_PATH];
//TCHAR szFindFile[] = "*.*";
TCHAR szFind[MAX_PATH];
BOOL fFinished = FALSE;
// Start searching for .TXT files in the current directory.
lstrcpy(szFind, szDirPath);
lstrcat(szFind,_T("\\"));
lstrcat(szFind, szFindFile);
hSearch = FindFirstFile(szFind, &FileData);
if (hSearch == INVALID_HANDLE_VALUE)
{
ErrorHandler("No files found.");
fFinished = TRUE;
} // Copy each .TXT file to the new directory
// and change it to read only, if not already. while (!fFinished)
{
if(lstrcmp(FileData.cFileName,_T(".")) && lstrcmp(FileData.cFileName,_T("..")))
{
lstrcpy(szFoundFile, szDirPath);
lstrcat(szFoundFile,_T("\\"));
lstrcat(szFoundFile, FileData.cFileName);
//delete file;
WIN32_FILE_ATTRIBUTE_DATA fad;
if (GetFileAttributesEx(szFoundFile, GetFileExInfoStandard, &fad))
{
if (fad.dwFileAttributes & FILE_ATTRIBUTE_READONLY)
{
SetFileAttributes(szFoundFile,fad.dwFileAttributes &~FILE_ATTRIBUTE_READONLY);
}
}
// DWORD dwAttrs = GetFileAttributes(szFoundFile); // if ( dwAttrs != INVALID_FILE_ATTRIBUTES)
// {
// if (dwAttrs & FILE_ATTRIBUTE_READONLY)
// {
// MessageBox(NULL,"readonly","XXX",MB_OK);
// SetFileAttributes(szFoundFile, dwAttrs & ~FILE_ATTRIBUTE_READONLY);
// }
// }
if(FileData.dwFileAttributes != FILE_ATTRIBUTE_DIRECTORY)
{
if (!DeleteFile(szFoundFile))
{
ErrorHandler("Couldn't copy file.");
}
} if(FileData.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY)
{
TCHAR szTempDir[MAX_PATH];
lstrcpy(szTempDir,szDirPath);
lstrcat(szTempDir,_T("\\"));
lstrcat(szTempDir,FileData.cFileName);
DeleteDir(szTempDir,_T("*.*"),TRUE);
}
} if (!FindNextFile(hSearch, &FileData))
{
if (GetLastError() == ERROR_NO_MORE_FILES)
{
ErrorHandler("Finished: No more files left.");
fFinished = TRUE;
}
else
{
ErrorHandler("Couldn't find next file.");
}
}
}
// Close the search handle.
if (hSearch != INVALID_HANDLE_VALUE && !FindClose(hSearch))
{
ErrorHandler("Couldn't close search handle.");
} //Remove the directory;
if(bDelDir)
{
lstrcpy(szFoundFile, szDirPath); if(!RemoveDirectory(szFoundFile))
{
ErrorHandler("Cannot remove the directory");
ret = GetLastError();
//printf("errorcode = %d", ret);
}
} return ret;
}
DeleteDir(szDir,_T("*.*"),TRUE);
ZeroMemory( &fos, sizeof( fos)) ;
fos.hwnd = HWND_DESKTOP;
fos.wFunc = FO_DELETE ;
fos.fFlags = FOF_SILENT | FOF_ALLOWUNDO | FOF_FILESONLY ;
fos.pFrom = "c:\\temp" ;
// 删除文件夹及其内容
SHFileOperation( &fos);
2. BOOL DeleteEx(LPCTSTR lpName,bool bRecover=false)
{
SHFILEOPSTRUCT fo;
fo.hwnd=NULL;
fo.hNameMappings=NULL;
fo.pFrom=lpName;
fo.pTo=NULL;
fo.wFunc=FO_DELETE;
fo.fFlags=FOF_NOCONFIRMATION|FOF_NOERRORUI|FOF_SILENT;
if(bRecover)
fo.fFlags|=FOF_ALLOWUNDO;
return SHFileOperation(&fo);
}
3. DeleteDir(szDir,_T("*.*"),TRUE); // But this will also delete the folder :)
4. needn't 4 any more