①、文件夹的创建: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 文件枚举器的功能!
 

vc++基础班[23]---文件夹的基本操作的更多相关文章

  1. vc++基础班[22]---文件的基本操作2

      MFC 中的 CFile 及其派生类中没有提供直接进行文件的复制操作,因而要借助于SDK API: SDK中的文件相关函数常用的有CopyFile().CreateDirectory().Dele ...

  2. vc++基础班[21]---文件的基本操作之CFile

    ①.文件的创建.打开.关闭: 文件的创建.打开:CFile::Open 文件的关闭:CFile::Close   CFile::modeCreate:以新建方式打开,如果文件不存在,则新建:如果文件已 ...

  3. vc++基础班[24]---系统各种路径信息的获取

    vc++基础班[24]---系统各种路径信息的获取 ------------------------------------------ Begin ------------------------- ...

  4. vc++基础班[25]---系统信息的获取

    --------------------------------------------------------------------------- VC 驿站 WwW.CcTry.CoM 多抽出一 ...

  5. VC++实现遍历指定文件夹

    VC++实现遍历指定文件夹,并进行深度遍历,一级,二级...最终列出该文件夹下所有文件全路径. #include "stdafx.h" #include <iostream& ...

  6. VC如何得到一个文件夹的路径

    VC中没有现成的函数来选择一个文件夹,但这是经常会用到的,怎么办?自动动手,丰衣足食! 使用SHBrowseForFolder,代码如下: #include   int SelFolder(HWND ...

  7. VC 获取系统特殊文件夹的路径如:系统目录,桌面等

    转载:https://blog.csdn.net/qq_23992597/article/details/50963343 如果需要,请在StdAfx.h中添加 #include <shlobj ...

  8. Winform 基础知识 之文件夹操作

    using System.IO; /// <summary> /// 删除文件夹下所有文件 /// </summary> /// <param name="di ...

  9. java基础IO删除文件夹文件

    /** * 定义一个方法,能够删除任意文件夹,文件夹路径由键盘录入 注意:不要在C盘下做测试,请选定无用的文件夹测试! */ 1.键盘录入 private static File getfile() ...

随机推荐

  1. vue基础篇---路由的实现《2》

    现在我们来实现这样一个功能: 一个页面,包含登录和注册,点击不同按钮,实现登录和注册页切换: 编写父组件 index.html <div id="app"> <s ...

  2. cmd命令查看当前IIS运行的网站iisapp appcmd

    xp,2003中用的命令是:iisapp -a 2007,2008,2012系统中: cmd命令行进入%windir%\system32\inetsrv\目录下 运行appcmd.exe list w ...

  3. select监听udp消息

    服务端 #!/usr/bin/python2.6 # -*- coding:utf-8 -*- import json import socket import select def socketse ...

  4. 开源框架.netCore DncZeus学习(四)项目升级

    今天发现开源代码从1.0.0.1升级到了1.0.1.0,主要去掉了id主键,升级办法打开DncZeus,右键Git Bash Here,输入以下命令 合并失败,因为上一节尝试修改了几个代码,解决办法 ...

  5. json中带有\r\n处理

    后台代码把换行符\r\n替换为\\r\\n,前台代码js收到的字符就是\r\n

  6. Sqlserver直接附加数据库和设置sa密码

    1.exec sp_attach_db 'test','E:\db\test.mdf','E:\db\test_log.ldf' 2.sp_password Null,'123','sa' 推荐一个微 ...

  7. JavaSE回顾及巩固的自学之路(二)——————进入JavaSE

    好的.今天接着上一篇文章对JavaSE的历程初步介绍,开始对JavaSE的技术性知识进行探讨. 首先,选择编程,成为一名程序员,应该会了解一些计算机的相关基础知识,毕竟,以后就是和计算机打交道了嘛.s ...

  8. 九、uboot 代码流程分析---relloc_code

    执行完 board_init_f 后,重新跳转回 _main 中执行. 9.1 relloc_code 前 9.1.1 gd 设置 在调用board_init_f()完成板卡与全局结构体变量 gd 的 ...

  9. 十种MYSQL显错注入原理讲解(三)

    这回间隔时间有点长了,年前年后忙的头晕眼花,外加大病.下面我继续讲解. 1.multipolygon() and multipolygon((select * from(select * from(s ...

  10. C# FTPHelper工具类

    /// <summary> /// Ftp /// </summary> public class FtpFileOperation { private string _ftp ...