看流星社区

 找回密码
 注册账号
查看: 1978|回复: 0

递归创建目录、删除目录

[复制链接]

该用户从未签到

发表于 2017-6-3 14:26:27 | 显示全部楼层 |阅读模式
递归创建目录、删除目录


windows api中没有提供现成的多层创建目录、删除目录。这里修改了部分代码实现递归创建目录、删除目录。

//删除目录
BOOL DeleteDirectory(char* sDirName) {  CFileFind tempFind;  char sTempFileFind[200] ;  sprintf(sTempFileFind,"%s//*.*",sDirName);  BOOL IsFinded = tempFind.FindFile(sTempFileFind);  while (IsFinded) {  IsFinded = tempFind.FindNextFile();   if (!tempFind.IsDots()) {  char sFoundFileName[200];  strcpy(sFoundFileName,tempFind.GetFileName().GetBuffer(200));   if (tempFind.IsDirectory()) {  char sTempDir[200];  sprintf(sTempDir,"%s//%s",sDirName,sFoundFileName);  DeleteDirectory(sTempDir);  }  else {  char sTempFileName[200];  sprintf(sTempFileName,"%s//%s",sDirName,sFoundFileName);  DeleteFile(sTempFileName);  }  }  }  tempFind.Close();  if(!RemoveDirectory(sDirName)) {  return FALSE;  }  return TRUE; }


// 判断目录是否存在BOOL FolderExists(CString s){ DWORD attr;  attr = GetFileAttributes(s);  return (attr != (DWORD)(-1) ) && ( attr & FILE_ATTRIBUTE_DIRECTORY); }

// 创建目录
BOOL CreateDir(CString P){ int len=P.GetLength(); if ( len <2 ) return false;   if('//'==P[len-1]) { P=P.Left(len-1); len=P.GetLength(); } if ( len <=0 ) return false;  if (len <=3)  { if (FolderExists(P))return true; else return false;  }  if (FolderExists(P))return true;   CString Parent; Parent=P.Left(P.ReverseFind('//') );  if(Parent.GetLength()<=0)return false;   BOOL Ret=CreateDir(Parent);   if(Ret)  { SECURITY_ATTRIBUTES sa; sa.nLength=sizeof(SECURITY_ATTRIBUTES); sa.lpSecurityDescriptor=NULL; sa.bInheritHandle=0; Ret=(CreateDirectory(P,&amp;sa)==TRUE); return Ret; } else return FALSE;}
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-4-23 22:30

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表