用createdirectory创建新文件夹,若原来已存在同名文件夹(不是肯定有),并且该文件夹下面还有文件,怎么删除这些文件并创建文件夹呢?谢谢!

解决方案 »

  1.   

    如果你想删除文件夹,并且一股脑的把里面包含的文件都删除掉的话,你可以使用SHFileOperation============================================================================
    http://www.betajin.com/alphasun/index.htm
    DocWizard C++程序文档自动生成工具 | Wave OpenGL 水波与动模拟和显示
      

  2.   

    可以试用一下_ulink,或者自己写段代码,遍历删除整个目录
      

  3.   

    //一个小函数,不管原来有没有存在都可以,没考虑只读属性的盘
    void CBookSet::CreateDirTree(LPCTSTR path)
    {
        CString sFullPath = path;
        
        int iPos = sFullPath.Find(_T("\\\\")) + 1;
        if(iPos != 0)
        {    //    support \\192.168.53.136\vssworkpath\test2\...
            iPos = sFullPath.Find(_T('\\'), iPos + 1);
            iPos = sFullPath.Find(_T('\\'), iPos + 1);
        }
        else
        {    //    support c:\test2\...
            iPos = sFullPath.Find(_T('\\'), iPos + 1);
        }    while( -1 != (iPos = sFullPath.Find(_T('\\'), iPos + 1)) )
        {
            ::CreateDirectory(sFullPath.Left(iPos), NULL);
        }
    }
      

  4.   

    if (PathIsDirectory(picPath))
    {
    删除操作
     CreateDirectory(picPath, NULL);
    }
      

  5.   

    //先删除文件,再删目录,再创建目录,在用该函数前把目录地址取得并传给变量szPath
    void CDelUnEmptyDirDlg::DeleteFile(CString szPath)
    {
    CFileFind ff;
    CString path = szPath;

    if(path.Right(1) != "\\")
    path += "\\"; path += "*.*";
    BOOL res = ff.FindFile(path); while(res)
    {
    res = ff.FindNextFile();
    //是文件时直接删除
    AfxMessageBox(ff.GetFilePath());
    if (!ff.IsDots() && !ff.IsDirectory())
    DeleteFile(ff.GetFilePath());
    else if (ff.IsDots())
    continue;
    else if (ff.IsDirectory())
    {
    path = ff.GetFilePath();
    //是目录时继续递归,删除该目录下的文件
    RecursiveDelete(path);
    //目录为空后删除目录
    RemoveDirectory(path);
    }
    }
    //最终目录被清空了,于是删除该目录
    RemoveDirectory(szPath);
             CreateDirectory(......);//创建目录
     
    }
      

  6.   

    更正:RecursiveDelete(path);//目录为空后删除目录
         改为DeleteFile(path);