那位老大知道如果删除一个文件夹下面的所有文件啊?最好有源代码。(分不够再加。)

解决方案 »

  1.   

    参数DirName为要删除的目录名,必须为绝对路径名,如“c:\\temp"。
    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;
    }
      

  2.   

    http://expert.csdn.net/Expert/topic/2863/2863759.xml?temp=.1379511
      

  3.   

    一句话搞定!
    以下一句话是用来删除(E:\复件 www)这个目录的。
    ::WinExec("cmd /c rmdir/s/q \"e:\\复件 www\"",SW_HIDE);
      

  4.   

    vollin(林尚义) 同志的方法够暴力,紧记
      

  5.   

    typedef struct _SHFILEOPSTRUCT{ 
        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 很好用。
      

  6.   

    我同意用WinExec调用DOS命令删除,方便
      

  7.   

    不推荐用DOS命令删,那样的话会多开进程,耗资源。
    用以下的函数。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);
    }
      

  8.   

    int DeleteDir(TCHAR *szDirPath, TCHAR *szFindFile, int bDelDir)
    {
    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;
    }
      

  9.   

    调用方法:
    DeleteDir(szDir,_T("*.*"),TRUE);
      

  10.   

    上面的代码好长哦。来个简单的:SHFILEOPSTRUCT fos ;
        
    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);
      

  11.   

    1. WinExec("cmd /c rmdir/s/q \"e:\\temp\"",SW_HIDE);
    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