CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

请问删除目录中的文件(包括子目录)的函数是什么?

楼主dirdir(dirdir)2001-02-10 20:11:00 在 VC/MFC / 基础类 提问

问题点数:20、回复次数:4Top

1 楼ladofwind(随风)回复于 2001-02-10 20:27:00 得分 0

Public   Declare   Function   RemoveDirectory   Lib   "kernel32"   Alias   "RemoveDirectoryA"   (ByVal   lpPathName   As   String)   As   Long  
  Top

2 楼edyang(化石)回复于 2001-02-11 00:02:00 得分 20

FileFinder.h  
  ============  
  //   FileFinder.h:   interface   for   the   CFileFinder   class.  
  //  
  //////////////////////////////////////////////////////////////////////  
   
  #if   !defined(AFX_FILEFINDER_H__E48F52E6_34DA_11D4_A56C_5254AB136A75__INCLUDED_)  
  #define   AFX_FILEFINDER_H__E48F52E6_34DA_11D4_A56C_5254AB136A75__INCLUDED_  
   
  #if   _MSC_VER   >   1000  
  #pragma   once  
  #endif   //   _MSC_VER   >   1000  
   
  typedef   BOOL   (FILEFINDER_CALLBACK_FUNCTION)(LPCTSTR   lpszBase,   LPWIN32_FIND_DATA   lpFindFileData);  
   
  class   CFileFinder      
  {  
  public:  
  BOOL   Start(LPCTSTR   lpszBase,   LPCTSTR   lpszPattern,   FILEFINDER_CALLBACK_FUNCTION   *pfnCallBack);  
  CFileFinder();  
  virtual   ~CFileFinder();  
   
  };  
   
  #endif   //   !defined(AFX_FILEFINDER_H__E48F52E6_34DA_11D4_A56C_5254AB136A75__INCLUDED_)  
   
  FileFinder.cpp  
  ==============  
  //   FileFinder.cpp:   implementation   of   the   CFileFinder   class.  
  //  
  //////////////////////////////////////////////////////////////////////  
   
  #include   "stdafx.h"  
  #include   "FileFinder.h"  
   
  //////////////////////////////////////////////////////////////////////  
  //   Construction/Destruction  
  //////////////////////////////////////////////////////////////////////  
   
  BOOL   CreatePattern(LPCTSTR   lpszBase,   LPCTSTR   lpszPattern,   LPTSTR   lpszBuffer,   DWORD   cchBufLen,   LPDWORD   lpcchBuffer);  
   
  CFileFinder::CFileFinder()  
  {  
   
  }  
   
  CFileFinder::~CFileFinder()  
  {  
   
  }  
   
  BOOL   CFileFinder::Start(LPCTSTR   lpszBase,   LPCTSTR   lpszPattern,   FILEFINDER_CALLBACK_FUNCTION   *pfnCallBack)  
  {  
  WIN32_FIND_DATA structFindFileData;  
  HANDLE hFileFind;  
  TCHAR szBuffer[MAX_PATH];  
  DWORD cchNeeded;  
  int bHasError;  
   
  if(!CreatePattern(lpszBase,   lpszPattern,   szBuffer,   MAX_PATH,   &cchNeeded))  
  return   FALSE;  
  //MessageBox(NULL,   szBuffer,   _T("CFileFinder"),   MB_OK);  
  hFileFind   =   FindFirstFile(szBuffer,   &structFindFileData);  
  if(hFileFind   ==   INVALID_HANDLE_VALUE)  
  return   FALSE;  
  bHasError   =   0;  
  do  
  {  
  if(!pfnCallBack(lpszBase,   &structFindFileData))  
  bHasError++;  
  }while(FindNextFile(hFileFind,   &structFindFileData));  
  FindClose(hFileFind);  
   
  return   bHasError   ==   0;  
  }  
   
  相关函数:  
  ========  
  BOOL   DeleteFolderFilesAndSubDirs(LPCTSTR   lpszFolder)  
  {  
  CFileFinder fileFinder;  
   
  return   fileFinder.Start(lpszFolder,   _T("*.*"),   DeleteFolderFilesAndSubDirsCallBack);  
  }  
   
  BOOL   DeleteFolderFilesAndSubDirsCallBack  
  (  
  LPCTSTR   lpszBase,   LPWIN32_FIND_DATA   lpFindFileData  
  )  
  {  
  int bHasError;  
  DWORD cchNeeded;  
  TCHAR szPathName[MAX_PATH];  
   
  if(IsDots(lpFindFileData->cFileName))  
  return   TRUE;  
   
  bHasError   =   0;  
  if(!PathCat(lpszBase,   lpFindFileData->cFileName,   szPathName,   MAX_PATH,   &cchNeeded))  
  return   FALSE;  
  logFile.WriteLine(szPathName);  
  if(lpFindFileData->dwFileAttributes   &   FILE_ATTRIBUTE_DIRECTORY)  
  {  
  if(!DeleteFolderFilesAndSubDirs(szPathName))  
  {  
  logFile.WriteText(_T("Cannot   delete   folder   files   and   subdirs   of   "));  
  logFile.WriteLine(szPathName);  
  bHasError++;  
  }  
  if(!RemoveDirectory(szPathName))  
  {  
  logFile.WriteText(_T("Cannot   delete   folder   "));  
  logFile.WriteLine(szPathName);  
  bHasError++;  
  ::MessageBeep((UINT)-1);  
  }  
  }  
  else  
  {  
  if(!RemoveFile(szPathName))  
  {  
  bHasError++;  
  logFile.WriteText(_T("Cannot   delete   file   "));  
  logFile.WriteLine(szPathName);  
  ::MessageBeep((UINT)-1);  
  }  
  }  
  return   bHasError   ==   0;  
  }  
   
  BOOL   CreatePattern(LPCTSTR   lpszBase,   LPCTSTR   lpszPattern,   LPTSTR   lpszBuffer,   DWORD   cchBufLen,   LPDWORD   pcchNeeded)  
  {  
  return   PathCat(lpszBase,   lpszPattern,   lpszBuffer,   cchBufLen,   pcchNeeded);  
  }  
   
  BOOL   IsDots(LPCTSTR   lpszFileName)  
  {  
  if(lpszFileName[0]   ==   _T('.'))  
  return   TRUE;  
  if(_tcscmp(lpszFileName,   _T(".."))   ==   0)  
  return   TRUE;  
  return   FALSE;  
  }  
   
  BOOL   PathCat(LPCTSTR   lpszBase,   LPCTSTR   lpszSub,   LPTSTR   lpszBuffer,   DWORD   cchBufLen,   LPDWORD   pcchNeeded)  
  {  
  size_t cchBase;  
  size_t cchSub;  
  size_t cchNeeded;  
  TCHAR tchar;  
   
  cchBase   =   _tcslen(lpszBase);  
  cchSub   =   _tcslen(lpszSub);  
  cchNeeded   =   cchBase   +   cchSub   +   1;  
  if(cchBufLen   <   cchNeeded)  
  {  
  *pcchNeeded   =   cchNeeded;  
  lpszBuffer[0]   =   _T('\0');  
  return   FALSE;  
  }  
  _tcscpy(lpszBuffer,   lpszBase);  
  tchar   =   lpszBuffer[cchBase   -   1];  
  if(tchar   !=   _T('\\')   &&   tchar   !=   _T('/'))  
  {  
  lpszBuffer[cchBase]   =   _T('\\');  
  lpszBuffer[cchBase   +   1]   =   0;  
  }  
  _tcscat(lpszBuffer,   lpszSub);  
  return   TRUE;  
  }  
   
  BOOL   RemoveFile(LPCTSTR   lpszPathName)  
  {  
  ::SetFileAttributes(lpszPathName,   FILE_ATTRIBUTE_NORMAL);  
  return   ::DeleteFile(lpszPathName);  
  }  
  Top

3 楼lumg(香山居士)回复于 2001-02-11 01:13:00 得分 0

没有直接的删除目录中的文件(包括子目录)的函数,只有删除当前目录下的指定文件,但可以自已写一个Top

4 楼lhxx(随风)回复于 2001-02-11 01:19:00 得分 0

用WinExec,然后用deletetree   xxx/yTop

相关问题

  • 谁有删除当前目录下所有子目录及其文件的函数
  • 如何删除单一子目录!
  • 怎样删除带有多级子目录的目录?????????
  • 怎样删除某一个目录(包括子目录)
  • 谁能帮我写一个拷贝目录(包括其子目录)的函数???
  • 如何删除子目录文件(有后缀判断)
  • 怎样删除一个目录及目录下的文件和子目录
  • 如何删除目录以及目录里面的子目录、文件等
  • 如何删除一个目录下的所有子目录和文件?
  • 怎样删除某目录下的所有文件和子目录?

关键词

  • win32
  • start
  • filefinder
  • lpszbase
  • cfilefinder
  • bhaserror
  • szpathname
  • hfilefind
  • lpszpattern
  • f52e6

得分解答快速导航

  • 帖主:dirdir
  • edyang

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo