zoukankan      html  css  js  c++  java
  • vc++基础班[23]---文件夹的基本操作

     
    ①、文件夹的创建:CreateDirectory
    ※※※ 注意:此函数只能创建一层目录,比如想在 C 盘下的 Temp 目录下创建新目录为:123
    那么前提是 Temp 这个目录存在才可以!
     
    ②、文件夹的删除:RemoveDirectory
    ※※※ 注意:此函数只能删除一个空的目录,如果目录中有子目录或子文件的话会删除失败的!
    解决的方法是用 递归的思想,调用上节课给大家讲解的文件删除函数将子文件删除,之后就可以调用此函数删除一个空的文件夹了;
     
    ③、文件夹属性信息的获取:GetFileAttributes
     
    ④、文件和文件夹的遍历操作:(※ 本节课的重点 ※)
    MFC 中对文件的遍历操作所支持的类是:CFileFind
     
    ⑤、相关示例代码,实现删除非空目录:
    BOOL DeleteTargetFolder(LPCTSTR lpstrPath)
    {
     CString strRootPath(lpstrPath);
     if (strRootPath[strRootPath.GetLength()-1] != '\')
      strRootPath = strRootPath + _T("\");
     
     CFileFind mFinder;
     BOOL bFind = mFinder.FindFile(strRootPath + _T("*.*"), 0); //如果指定文件类型的话,只能在本目录中遍历
     while (bFind){
      bFind = mFinder.FindNextFile();
      if (mFinder.IsDots()){
       continue;
      }else{
       if (mFinder.IsDirectory()){
        //目标是目录
        DeleteTargetFolder(mFinder.GetFilePath());
       }else{
        //目标是文件
        DeleteFile(mFinder.GetFilePath());
       }
      }
     }
     mFinder.Close();
     RemoveDirectory(strRootPath); //一定要放在 mFinder.Close(); 的下面,否则删除失败,提示文件夹正被使用中
     
     return TRUE;
    }
     
    ★ 给大家留一个小作业,当文件夹内部存在只读属性的文件时,如何删除掉此非空目录呢?
    ★ SHFileOperation 大家有时间看看这个函数的使用!
    ★ 完成 FileEnumer 文件枚举器的功能!
     
  • 相关阅读:
    [模板] 多项式全家桶
    [模板] 最大流和费用流分别的两种做法
    [模板] Miller_Rabin和Pollard_Rho
    [模板] 半平面交
    hdu4624 Endless Spin (min-max容斥+dp)
    luogu5193 炸弹 (扫描线)
    luogu4055 游戏 (二分图博弈)
    [模板]后缀自动机
    [模板]fhqTreap
    loj2977 巧克力 (斯坦纳树+随机化)
  • 原文地址:https://www.cnblogs.com/liaocheng/p/4243374.html
Copyright © 2011-2022 走看看