http://202.118.224.100/codeguru/fcompare.shtml.htm

解决方案 »

  1.   

    bool DeleteTree(LPCTSTR lpszPath)
    {
    WIN32_FIND_DATA data;
    ZeroMemory(&data, sizeof(data));
    HANDLE hFind = INVALID_HANDLE_VALUE; TCHAR szPath[MAX_PATH];
    _tcscpy(szPath, lpszPath);
    _tcscat(szPath, "\\*.*"); try
    {
    hFind = ::FindFirstFile(szPath, &data); while(hFind != INVALID_HANDLE_VALUE)
    {
    if(_tcscmp(data.cFileName, ".") != 0 && _tcscmp(data.cFileName, "..") != 0)
    { // Ignore the . and .. file
    if(data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
    {
    TCHAR szDirectory[MAX_PATH + 1];
    _tcscpy(szDirectory, lpszPath);
    _tcscat(szDirectory, "\\");
    _tcscat(szDirectory, data.cFileName);
    DeleteTree(szDirectory);
    }
    else
    {
    TCHAR szFileName[MAX_PATH];
    _tcscpy(szFileName, lpszPath);
    _tcscat(szFileName, "\\");
    _tcscat(szFileName, data.cFileName);
    CFile::Remove(szFileName);
    }
    } if(!::FindNextFile(hFind, &data))
    break;
    } ::FindClose(hFind);
    }
    catch(CFileException* e)
    {
    if(hFind != INVALID_HANDLE_VALUE)
    ::FindClose(hFind);
    ::SetLastError(e->m_cause);
    e->Delete();
    return false;
    }
    catch(...)
    {
    if(hFind != INVALID_HANDLE_VALUE)
    ::FindClose(hFind);
    return false;
    } return ::RemoveDirectory(lpszPath) != FALSE;
    }上面的函数实现了删除一个目录(包括其中的文件和子目录),lpszPath传给要删除的目录名就可以了。
    主要是用了,FindFirstFile和FindNextFile这两个API