用remove似乎只能逐个删除而不能一次删除所有文件?那应该怎么做呢?谢谢。

解决方案 »

  1.   

    http://expert.csdn.net/Expert/topic/1988/1988920.xml?temp=.6686823
    一样的问题!
      

  2.   

    没有直接删除非空文件夹的API函数,必须遍历该文件夹下的所有文件并一一删除,然后才可以删除该文件夹。(使用CFileFind类可以轻松达到该目的,不过,如果文件夹下包含有子文件夹,则需要使用到递归调用才能达到目的。)参考一下楼上的链接,里面有一的DeleteDirectory的函数,修改一下,估计能够达到你的要求。
      

  3.   

    删除文件//example for CFile::Remove
    char* pFileName = "test.dat";
    TRY
    {
        CFile::Remove( pFileName );
    }
    CATCH( CFileException, e )
    {
        #ifdef _DEBUG
            afxDump << "File " << pFileName << " cannot be removed\n";
        #endif
    }
    END_CATCH
      

  4.   

    用CFindFile遍历文件夹下的所有文件
    然后删除
    然后再删除这个文件夹
      

  5.   

    枚举一个文件夹中的所有文件
    WIN32_FIND_DATA FileData; 
    HANDLE hSearch; 
    DWORD dwAttrs; 
    char szDirPath[] = "c:\\TEXTRO\\"; 
    char szNewPath[MAX_PATH]; 
    char szHome[MAX_PATH]; 
     
    BOOL fFinished = FALSE; 
     
    // Create a new directory. 
     
    if (!CreateDirectory(szDirPath, NULL)) 

        ErrorHandler("Couldn't create new directory."); 

     
    // Start searching for .TXT files in the current directory. 
     
    hSearch = FindFirstFile("*.txt", &FileData); 
    if (hSearch == INVALID_HANDLE_VALUE) 

        ErrorHandler("No .TXT files found."); 

     
    // Copy each .TXT file to the new directory 
    // and change it to read only, if not already. 
     
    while (!fFinished) 

        lstrcpy(szNewPath, szDirPath); 
        lstrcat(szNewPath, FileData.cFileName); 
        if (CopyFile(FileData.cFileName, szNewPath, FALSE))
        { 
            dwAttrs = GetFileAttributes(FileData.cFileName); 
            if (!(dwAttrs & FILE_ATTRIBUTE_READONLY)) 
            { 
                SetFileAttributes(szNewPath, 
                    dwAttrs | FILE_ATTRIBUTE_READONLY); 
            } 
        } 
        else 
        { 
            ErrorHandler("Couldn't copy file."); 
        } 
     
        if (!FindNextFile(hSearch, &FileData)) 
        {
            if (GetLastError() == ERROR_NO_MORE_FILES) 
            { 
                MessageBox(hwnd, "No more .TXT files.", 
                    "Search completed.", MB_OK); 
                fFinished = TRUE; 
            } 
            else 
            { 
                ErrorHandler("Couldn't find next file."); 
            } 
        }
      

  6.   

    BOOL DeleteFolder(const CString strDirRoot)
    {
    SHFILEOPSTRUCT FileOp;
    memset(&FileOp, 0, sizeof(FileOp));               
    FileOp.hwnd = NULL;
    FileOp.wFunc = FO_DELETE;  //删除                       
    FileOp.pFrom = strDirRoot;
    FileOp.pTo = NULL;
    FileOp.fFlags = FOF_SIMPLEPROGRESS | FOF_ALLOWUNDO    
             (::SHFileOperation(&FileOp) == 0){
    return TRUE;
            }else return FALSE;

    }
      

  7.   

    CString strWildcard(m_strCacheImagePath);
    strWildcard += _T("\\*.*");
    CFileFind finder;
    BOOL bWorking = finder.FindFile(strWildcard);
    while (bWorking)
    {
    bWorking = finder.FindNextFile();
    ::DeleteFile((LPCTSTR) finder.GetFilePath());
    }
    finder.Close();
      

  8.   

    QinMichael的方法比较好。而且可以删除到回收站里。
      

  9.   

    SHFileOperation好用
    MSDN::
    SHFileOperation
    WINSHELLAPI int WINAPI SHFileOperation(
        LPSHFILEOPSTRUCT lpFileOp
    ); Copies, moves, renames, or deletes a file system object. Returns zero if successful, or nonzero otherwise. 
    lpFileOp 
    Address of an SHFILEOPSTRUCT structure that contains information this function needs to carry out the specified operation. --------------------------------------------------------------------------------
      

  10.   

    谢谢。用了SHFileOperation,相当方便。