关于删除文件、文件夹的问题! 求一个可以删除文件、文件夹、非空文件夹的函数。不要API写的。不知道哪位高手能解决小弟的问题。感激不尽! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 //删除指定文件夹下所有文件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;} 有API函数为啥不用,还要自己写CFileFind类+DeleteFile/DeleteDirectorySHFileOperation();可以直接实现 这函数是删指定文件夹下的文件 如果你想连这个文件夹也一起删,删空文件夹不知道吗????FK 好心回答让人给BS 支持lz,现在一些csdn的问问题的人阿...哀 此方法是可行楼主请自己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); //文件是否能删除。文件属性不应该为只读 }再不行的话那继续找办法了。 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); } } 。。分能当分吃啊 。只是觉得好意回帖 被人BS 心里有种不痛快而已CSDN的分能有啥用啊。真是的 我觉得吧,CSDN还是热心人多,楼主你不管代码从哪里来,只要对你有帮助就是好贴啊。这事情还得淡定啊 FUCK,明明是你自己问题,还一个劲的说代码问题。俺彻底无语了 你有试过代码没?这个代码不能删除文件夹下的文件?,,,,,靠 啥鸟人都有 非要别人把代码一个字符不能少的给你。Y的 该函数的确是网上找的,但是足够满足你的要求了。我贴的那函数代码前面有函数说明 难道你没看见啊Y的,文件删了,删空文件夹不会直接调RemoveDirectory啊难道非要别人把代码每行都给你贴上去。拜托楼主以后求代码自己多调试 多动动手。别指望人家把啥给你弄好你直接就可以用了 又想起CSDN那个提问的智慧了...不想说啥,反正咱也是菜鸟... 看了这贴,我也觉得很不是滋味csdn不是技术论坛吗?怎么为了一段代码的来历争来争去?如果别人贴的代码有问题,麻烦找出来指正,真相不是靠BS来BS去弄清楚地。为了技术问题指出错误,没必要对别人帮忙的程度进行苛求,好像来回帖的人都是为了这些分一样授人以鱼不如授人以渔,可现在有的人呢,还要求把鱼搞熟了放进嘴里,嘴不张开还要求多多有感而发,纯属个人意见 我觉得楼主你可以bs回帖的人没问题,但最好给个bs的理由,不能出口伤人。你说代码不行,最好能这样描述问题:贴出:我xxxx运行,或是贴出你测试代码,调用代码,和错误现象,错误异常提示,错误编码,或许大家会关注问题,如果真是给你代码有问题,修改就可以了, 专程来BS楼猪这种没人品,没JJ的衰人…… 找骂! comboBox原理性问题! 谁记得查找字符数组里的多个分隔符用什么函数. 请问develper studio object 中的几个 对象中 有关于 编译出错信息的 属性或者 方法吗 求助VC1。0的DEBUG菜单里的选项怎么老是“灰色”不能选用。 看VC6技术内幕第一天有感 C++中,有没有全局变量,可以被项目中所有的类共用? 求助:我有一个 CHECK1 控件,我怎么使其选中,还是不选中?谢谢! 关于对话框重画的问题。 如何获取当前活动子窗口打开文档的文件名称? mfc对话框控件美化时出了一点问题 求方案:关于流媒体采集
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;
}
楼主请自己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); //文件是否能删除。文件属性不应该为只读
}
再不行的话那继续找办法了。
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);
}
}
。。分能当分吃啊 。
只是觉得好意回帖 被人BS 心里有种不痛快而已
CSDN的分能有啥用啊。真是的
这事情还得淡定啊
FUCK,明明是你自己问题,还一个劲的说代码问题。俺彻底无语了 你有试过代码没?这个代码不能删除文件夹下的文件?,,,,,靠 啥鸟人都有 非要别人把代码一个字符不能少的给你。Y的
csdn不是技术论坛吗?怎么为了一段代码的来历争来争去?如果别人贴的代码有问题,麻烦找出来指正,真相不是靠BS来BS去弄清楚地。
为了技术问题指出错误,没必要对别人帮忙的程度进行苛求,好像来回帖的人都是为了这些分一样
授人以鱼不如授人以渔,可现在有的人呢,还要求把鱼搞熟了放进嘴里,嘴不张开还要求多多
有感而发,纯属个人意见
你说代码不行,最好能这样描述问题:
贴出:我xxxx运行,或是贴出你测试代码,调用代码,和错误现象,错误异常提示,错误编码,或许大家会关注问题,如果真是给你代码有问题,修改就可以了,