我已经知道了一个文件夹的路径和名字
现在我想删除该文件夹下所有文件
但是不知道如何知道这些所有文件,我想用remove一个个删除文件
大侠们有什么高招?

解决方案 »

  1.   

    都是一个个删除的:
    while(文件夹不空)
    {
    deletefile;
    }
      

  2.   

    http://expert.csdn.net/Expert/topic/1976/1976296.xml?temp=.4221155
      

  3.   

    /*
    函数原型:BOOL DeleteDirectory(char *pszDirName);
    返回值:成功删除时返回TRUE,否则返回FALSE
    参数pszDirName为要删除的目录名,必须为绝对路径名,如“c:\\temp"。
    函数定义如下:
    */
    BOOL CUserCustom::DeleteDirectory(char *pszDirName)
    {
    CFileFind tempFind;
    char tempFileFind[200];
    sprintf(tempFileFind,"%s\\*.*",pszDirName);
    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",pszDirName,foundFileName);
    DeleteDirectory(tempDir);
    }
    else
    {
    char tempFileName[200];
    sprintf(tempFileName,"%s\\%s",pszDirName,foundFileName);
    DeleteFile(tempFileName);
    }
    }
    }
    tempFind.Close();
    RemoveDirectory(pszDirName);
    return TRUE;
    }
      

  4.   

    有没有函数直接将该文件夹Delete掉?而不需要遍历所有文件?
      

  5.   

    好像没有直接的api可以用。只有自己遍历文件夹了。
      

  6.   

    用SHFileOperation(),这个函数很好用,具体看MSDN
      

  7.   

    使用SHFileOperation可以删除整个目录,不过有一个需要注意的是,路径参数必须已'\0'结尾,否则会出错,Try it
      

  8.   

    用递归
     要删除一个目录,我们要完成下面几步:  1. 删除该目录下的所有文件  2. 如果该目录中还有子目录我们要递归地调用DeleteDirectory(LPCTSTR DirName)函数,以删除该子目录下的所有文件  3. 调用RemoveDirectory(LPCTSTR lpPathName)删除该目录
    DeleteDirectory(LPCTSTR DirName)函数的完整实现如下:
    BOOL DeleteDirectory(LPCTSTR DirName)
    {
    CFileFind tempFind; file://声明一个CFileFind类变量,以用来搜索
    char tempFileFind[200]; file://用于定义搜索格式
    sprintf(tempFileFind,"%s\\*.*",DirName);
    file://匹配格式为*.*,即该目录下的所有文件 BOOL IsFinded=(BOOL)tempFind.FindFile(tempFileFind);
    file://查找第一个文件
    while(IsFinded)
    {
    IsFinded=(BOOL)tempFind.FindNextFile(); file://递归搜索其他的文件 
    if(!tempFind.IsDots()) file://如果不是"."目录
    {
    char foundFileName[200];
    strcpy(foundFileName,tempFind.GetFileName().GetBuffer(200));
    if(tempFind.IsDirectory()) file://如果是目录,则递归地调用
    { file://DeleteDirectory
    char tempDir[200];
    sprintf(tempDir,"%s\\%s",DirName,foundFileName);
    DeleteDirectory(tempDir);
    }
    else
    { file://如果是文件则直接删除之
    char tempFileName[200];
    sprintf(tempFileName,"%s\\%s",DirName,foundFileName);
    DeleteFile(tempFileName);
    }
    }
    }
    tempFind.Close();
    if(!RemoveDirectory(DirName)) file://删除目录
    {
    AfxMessageBox("删除目录失败!",MB_OK);
    return FALSE;
    }
    return TRUE;
    }
      

  9.   

    #include <SHELLAPI.H>
    void main()
    {
    char buf[64];
    SHFILEOPSTRUCT fo; memset(buf, 0, sizeof(buf));
    memset(&fo, 0, sizeof(fo));
    strcpy(buf, "D:\\12\\*.*\0");
    fo.wFunc = FO_DELETE;
    fo.pFrom = buf; SHFileOperation(&fo); RemoveDirectory("D:\\12");}
      

  10.   

    建议使用SHFileOperation 一来方便 二来稳当
      

  11.   

    SHFileOperation 强大 好用  地球银都知道!
      

  12.   

    WinExec("cmd.exe /c  rd /s /q d:\test ", SW_SHOW);
      

  13.   

    上上楼的朋友没说错。我也有一个办法system("cmd /c del d:\\test\\*.*");或者system("command /c del d:\\test\\*.*");就可以了。
      

  14.   

    我这里有一个情况大家讨论一下
    1、remove好象不能删除只读文件
    2、rmdir删除失败
    当我删除当前文件下一个子目录
    我文件是用资源管理器打开
    因此这个子目录文件夹名称在左面树列表里还能够显示
    这个时候我用rmdir删除当前文件夹就失败
    这个是不是微软的bug?
      

  15.   

    remove删除之前可以设置文件的属性
      

  16.   

    删除很多文件的目录很快,为什么?
    就是没有一个个删除,而是直接在fat表删除该目录,其下的所有东西就被认为删掉了。
    你可以看看Windows自己删除的时候。