求一个可以删除文件、文件夹、非空文件夹的函数。不要API写的。不知道哪位高手能解决小弟的问题。感激不尽!

解决方案 »

  1.   

    //删除指定文件夹下所有文件
    void DeleteDirectory(char *sDirName)
    {
    CFileFind tempFile;
    char sTempFileFind[200];

    sprintf(sTempFileFind,"%s\\*.*",sDirName); 

    BOOL IsFind = tempFile.FindFile((LPCTSTR)sTempFileFind);
    while (IsFind)
    {
    IsFind = tempFile.FindNextFile();

    if(!tempFile.IsDots())//Î޵㣬ÊÇĿ¼
    {
    char sFileFind[200];
    strcpy(sFileFind, (char *)tempFile.GetFileName().GetBuffer(200));
    if(tempFile.IsDirectory())
    {
    char sTempDir[200];
    sprintf(sTempDir, "%s\\%s",sDirName,sFileFind);
    DeleteDirectory(sTempDir);
    }
    else
    {
    char sTempFileName[200]; 
    sprintf(sTempFileName,"%s\\%s",sDirName,sFileFind); 
    DeleteFile((LPCTSTR)sTempFileName); 
    }
    }

    }

    tempFile.Close(); 
    return;
    }
      

  2.   

    有API函数为啥不用,还要自己写CFileFind类+DeleteFile/DeleteDirectorySHFileOperation();可以直接实现
      

  3.   

    这函数是删指定文件夹下的文件 如果你想连这个文件夹也一起删,删空文件夹不知道吗????FK  好心回答让人给BS
      

  4.   

    支持lz,现在一些csdn的问问题的人阿...哀
      

  5.   

    此方法是可行
    楼主请自己DEBUG一下看为什么不可以删除。 
               
                if(tempFile.IsDirectory())
                {
                    char sTempDir[200];
                    sprintf(sTempDir, "%s\\%s",sDirName,sFileFind);
                    DeleteDirectory(sTempDir);
                }
                else
                {
                  char sTempFileName[200]; 
                   sprintf(sTempFileName,"%s\\%s",sDirName,sFileFind); 
              SetFileAttributes(sTempFileName,FILE_ATTRIBUTE_NORMAL);//关键是文件是不是正常属性。
                    DeleteFile((LPCTSTR)sTempFileName); //文件是否能删除。文件属性不应该为只读
                }
    再不行的话那继续找办法了。
       
      

  6.   


     protected void EmptyDirectory(string path)
            {
                if (!_isUpdating) return;
                string[] directories = Directory.GetDirectories(path);
                foreach (string dir in directories)
                {
                    try
                    {
                        Directory.Delete(dir, true);
                    }
                    catch (Exception)
                    {
                        EmptyDirectory(dir);
                        Directory.Delete(dir, true);
                    }
                }
                string[] files = Directory.GetFiles(path);
                foreach (string file in files)
                {
                    File.SetAttributes(file, FileAttributes.Normal);
                    File.Delete(file);
                }
            }
      

  7.   


    。。分能当分吃啊 。
    只是觉得好意回帖 被人BS 心里有种不痛快而已
    CSDN的分能有啥用啊。真是的
      

  8.   

    我觉得吧,CSDN还是热心人多,楼主你不管代码从哪里来,只要对你有帮助就是好贴啊。
    这事情还得淡定啊
      

  9.   


    FUCK,明明是你自己问题,还一个劲的说代码问题。俺彻底无语了 你有试过代码没?这个代码不能删除文件夹下的文件?,,,,,靠 啥鸟人都有 非要别人把代码一个字符不能少的给你。Y的  
      

  10.   

    该函数的确是网上找的,但是足够满足你的要求了。我贴的那函数代码前面有函数说明 难道你没看见啊Y的,文件删了,删空文件夹不会直接调RemoveDirectory啊难道非要别人把代码每行都给你贴上去。拜托楼主以后求代码自己多调试 多动动手。别指望人家把啥给你弄好你直接就可以用了 
      

  11.   

    又想起CSDN那个提问的智慧了...不想说啥,反正咱也是菜鸟...
      

  12.   

    看了这贴,我也觉得很不是滋味
    csdn不是技术论坛吗?怎么为了一段代码的来历争来争去?如果别人贴的代码有问题,麻烦找出来指正,真相不是靠BS来BS去弄清楚地。
    为了技术问题指出错误,没必要对别人帮忙的程度进行苛求,好像来回帖的人都是为了这些分一样
    授人以鱼不如授人以渔,可现在有的人呢,还要求把鱼搞熟了放进嘴里,嘴不张开还要求多多
    有感而发,纯属个人意见
      

  13.   

    我觉得楼主你可以bs回帖的人没问题,但最好给个bs的理由,不能出口伤人。
    你说代码不行,最好能这样描述问题:
    贴出:我xxxx运行,或是贴出你测试代码,调用代码,和错误现象,错误异常提示,错误编码,或许大家会关注问题,如果真是给你代码有问题,修改就可以了,
      

  14.   

    专程来BS楼猪这种没人品,没JJ的衰人……