以文本方式查看主题

-  计算机科学论坛  (http://bbs.xml.org.cn/index.asp)
--  『 C/C++编程思想 』  (http://bbs.xml.org.cn/list.asp?boardid=61)
----  删除一个隐藏,系统文件和一个目录下所有的文件  (http://bbs.xml.org.cn/dispbbs.asp?boardid=61&rootid=&id=40045)


--  作者:卷积内核
--  发布时间:11/15/2006 3:13:00 PM

--  删除一个隐藏,系统文件和一个目录下所有的文件
for(int   i=0;i<iDel_File_Counts;i++)   
  {   
  _itoa(i+1,temp,10);   
  GetPrivateProfileString("Delete_File_Name","DelFileDirectory","a:\\",DelFileDirectory,sizeof(DelFileDirectory),sFileName);   
  GetPrivateProfileString("Delete_File_Name",temp,"empty",strDelFileName,sizeof(strDelFileName),sFileName);   
  strcat(DelFileDirectory,"\\");   
  strcat(DelFileDirectory,strDelFileName);   
    
  UpdateData(TRUE);   
  m_message=strDelFileName;   
  UpdateData(FALSE);   
    
  if(::DeleteFile(DelFileDirectory)==0)   
  {   
    flag++;   
    strCannotDelFile+=strDelFileName;   
    strCannotDelFile+="\n";   
  }   
  AfxMessageBox(DelFileDirectory);   
  }   
  if(flag>0)   
  {   
  m_Result.SetTextColor(RGB(255,0,0));   
  m_Result.SetWindowText("Can't   Find   the   deleted   file");   
  UpdateData(TRUE);   
  m_message=strCannotDelFile;   
  UpdateData(FALSE);   
    
  }

--  作者:卷积内核
--  发布时间:11/15/2006 3:13:00 PM

--  
删除一个非空目录的两个办法:   
  1.   
  SHFILEOPSTRUCT   op={0};   
  op.wFunc   =   FO_DELETE;   
  op.pFrom   =   "c:\\11";   
  op.fFlags   =   FOF_SILENT|FOF_NOCONFIRMATION|FOF_ALLOWUNDO;   
  SHFileOperation(&op);   
    
  2.   
  void   DeleteFolder(CString   sPath)   
  {   
          CFileFind   ff;   
          BOOL   bFound;   
          bFound   =   ff.FindFile(sPath   +   "\\*.*");   
          while(bFound)   
          {   
                  bFound   =   ff.FindNextFile();   
                  CString   sFilePath   =   ff.GetFilePath();   
    
                  if(ff.IsDirectory())   
                  {   
                          if(!ff.IsDots())   
                                  DeleteFolder(sFilePath);   
                  }   
                  else   
                  {   
                          if(ff.IsReadOnly())   
                          {   
                                  SetFileAttributes(sFilePath,   FILE_ATTRIBUTE_NORMAL);   
                          }   
                          DeleteFile(sFilePath);   
                  }   
                    
          }   
          ff.Close();   
          SetFileAttributes(sPath,   FILE_ATTRIBUTE_NORMAL);   
          RemoveDirectory(sPath);   
  }

--  作者:卷积内核
--  发布时间:11/15/2006 3:14:00 PM

--  
BOOL   DeleteDirectory(char   *DirName)//如删除   DeleteDirectory("c:\\aaa")     
  {   
  CFileFind   tempFind;   
  char   tempFileFind[MAX_PATH];   
  sprintf(tempFileFind,"%s\\*.*",DirName);   
  BOOL   IsFinded=(BOOL)tempFind.FindFile(tempFileFind);   
  while(IsFinded)   
  {   
  IsFinded=(BOOL)tempFind.FindNextFile();   
  if(!tempFind.IsDots())   
  {   
  char   foundFileName[MAX_PATH];   
  strcpy(foundFileName,tempFind.GetFileName().GetBuffer(MAX_PATH));   
  if(tempFind.IsDirectory())   
  {   
  char   tempDir[MAX_PATH];   
  sprintf(tempDir,"%s\\%s",DirName,foundFileName);   
  DeleteDirectory(tempDir);   
  }   
  else   
  {   
  char   tempFileName[MAX_PATH];   
  sprintf(tempFileName,"%s\\%s",DirName,foundFileName);   
  DeleteFile(tempFileName);   
  }   
  }   
  }   
  tempFind.Close();   
  if(!RemoveDirectory(DirName))   
  {   
  MessageBox(0,"删除目录失败!","警告信息",MB_OK);//比如没有找到文件夹,删除失败,可把此句删除   
  return   FALSE;   
  }   
  return   TRUE;   
  }

W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
62.500ms