MFC 中的 CFile 及其派生类中没有提供直接进行文件的复制操作,因而要借助于SDK API;
SDK中的文件相关函数常用的有CopyFile()、CreateDirectory()、DeleteFile()、MoveFile()
 
①、文件的复制:CopyFile
若要复制文件夹,可以在目标位置新建一文件夹,然后将源文件夹里面的文件进行遍历,一个一个的复制到目标文件夹内即可!
 
②、文件的重命名或移动 [适用于文件夹]:
static CFile::Rename 重命名文件;
MoveFile,※※※注意:该函数不仅可以移动文件,还可以移动目录,包括目录中的文件和子目录,但是目录的移动只能限制在一个驱动器;
即:同一驱动器内为重命名操作,不同驱动器内为移动操作;
 
③、文件的删除:CFile::Remove 或 DeleteFile
如果文件有只读属性怎么办?普通的方法还能删除成功吗?
 
④、文件属性信息的获取:CFile::GetStatus
看看其内部 SDK API 的实现;
 
⑤、文件属性信息的设置:CFile::SetStatus
看看其内部 SDK API 实现;
这回可以成功的将只读属性的文件删除了……方法就是去除文件的只读属性后再进行删除操作;
 
BOOL DelReadOnlyFile(LPCTSTR lpszPath)
{
 DWORD dwRet = GetFileAttributes(lpszPath);
 if (dwRet == INVALID_FILE_ATTRIBUTES) return FALSE;
 
 if (dwRet & FILE_ATTRIBUTE_READONLY){
  dwRet &= ~FILE_ATTRIBUTE_READONLY;
  SetFileAttributes(lpszPath, dwRet);
 }
 
 return DeleteFile(lpszPath);
}
 
⑥、判断文件是否存在:方法也有很多种:
1>、_access 函数;
2>、CreateFile 函数;
3>、FindFirstFile 函数;
4>、GetFileAttributes 函数;
5>、PathFileExists(是 Shell Lightweight Utility APIs 函数:Header: Declared in Shlwapi.h Import Library: Shlwapi.lib)
 
这里面给大家使用 GetFileAttributes 函数进行讲解:
BOOL TargetIsExist(LPCTSTR lpszPath)
{
 BOOL bRet = TRUE;
 DWORD dwRet = GetFileAttributes(lpszPath);
 if (dwRet == INVALID_FILE_ATTRIBUTES && GetLastError() == ERROR_FILE_NOT_FOUND){
  bRet = FALSE;
 }
 return bRet;
}
 
⑦、判断给定路径是文件还是目录:
1>、GetFileAttributes 函数;
2>、PathIsDirectory(是 Shell Lightweight Utility APIs 函数:Header: Declared in Shlwapi.h Import Library: Shlwapi.lib)
3>、……
 
这里面给大家使用 GetFileAttributes 函数进行讲解:
int TargetIsDirectory(LPCTSTR lpszPath)
{
 int iRet = -1;
 DWORD dwRet = GetFileAttributes(lpszPath);
 if (dwRet == INVALID_FILE_ATTRIBUTES){
  iRet = -1;
 }else if (dwRet & FILE_ATTRIBUTE_DIRECTORY){
  iRet = 1;
 }else{
  iRet = 0;
 }
 
 return iRet;
}

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

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

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

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

      ①.文件夹的创建:CreateDirectory ※※※ 注意:此函数只能创建一层目录,比如想在 C 盘下的 Temp 目录下创建新目录为:123 那么前提是 Temp 这个目录存在才可以!   ...

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

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

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

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

  5. python基础学习Day8 文件的基本操作

    1.文件的基本操作初识 f = open('a.text', 'r', encoding='utf-8')data = f.read()print(data)f.close() 2.读  r  r+b ...

  6. python基础知识六 文件的基本操作+菜中菜

    基础知识六 文件操作 ​ open():打开 ​ file:文件的位置(路径) ​ mode:操作文件模式 ​ encoding:文件编码方式 ​ f :文件句柄 f = open("1.t ...

  7. vc++基础班[27]---实现一个简单的任务管理器

      因为任务管理器中涉及到进程的枚举操作,所以把两节课的知识点合并到一起来讲!   ①.设计界面.以及列表控件变量的绑定: ②.列表控件样式的指定: m_TaskList.SetExtendedSty ...

  8. vc++基础班[26]---进程的相关操作

      ①.ShellExecute 进行进程的创建,属于 shell api: //int iRet = (int)ShellExecute(m_hWnd, _T("open"), ...

  9. git学习记录——基础概念和文件的基本操作

    夸一下git git是当前世界上最先进的分布式版本控制系统 优势: 1.不必联网 2.Git极其强大的分支管理,把SVN等远远抛在了后面. 集中式的代表CVS和SVN 分布式的代表BitKeeper, ...

随机推荐

  1. Mybatis笔记三:全局配置文件

    目录 配置文件 dtd提示 properties标签(不怎么用) typeAliases 自动把下划线换成驼峰命名 配置文件 看着这个配置文件,我们将对这个配置文件进行细致的讲解 <?xml v ...

  2. java io系列11之 FilterOutputStream

    FilterOutputStream 介绍 FilterOutputStream 的作用是用来“封装其它的输出流,并为它们提供额外的功能”.它主要包括BufferedOutputStream, Dat ...

  3. win7安装linux CentOS7双系统实践

    开发需求要安装linux,百度了些资料,当然仅供参考,否则入坑. 步骤一 :制作Centos 7镜像文件,这步没什么坑 1.准备U盘8G以上 下载的话网上很多,这里提供一个下载路径:​ http:// ...

  4. HDU 1022(火车过站 栈)

    题意是给定火车进站的序列和出站的序列,问能否完成转换,若能输出过程. 和另一道以火车进站为背景的栈应用题类似,但增加了对于过程的输出,只需要多记录一下进出站顺序即可. #include <bit ...

  5. Part-Three 类与对象

    1.时钟类的完整程序 #include<iostream> using namespace std; class Clock{ public : ,,);//设置函数的默认值,注意!在此处 ...

  6. Android SVN上传项目

    方式一: 1 工具栏 VCS ——import into Version Control - Share Project (SubVersion)(注意不要用import into SubVersio ...

  7. PHP中关于PDO数据访问抽象层的功能操作

    PDO:数据访问抽象层 具有三大特点: 1.可以访问其它数据库  所有数据库都可以 2.具有事务功能 3.带有预处理语句功能(防止SQL注入攻击) 实例操作代码如下: <?php //1.造PD ...

  8. 高并发秒杀系统--junit测试类与SpringIoc容器的整合

    1.原理是在Junit启动时加载SpringIoC容器 2.SpringIoC容器要根据Spring的配置文件加载 [示例代码] package org.azcode.dao; import org. ...

  9. JavaScript 小工具

    1. 字符串格式化输出 支持形如: Orders of {1} or more {0}' {0},{1}代表第几个参数,包含了完善的异常处理.当给定参数少于格式化串中占位符个数时,未找到的直接留白. ...

  10. rabbitMQ学习3-RPC远程过程调用

    将一个函数运行在远程计算机上并且等待获取那里的结果,这个称作远程过程调用(Remote Procedure Call)或者 RPC. RPC是一个计算机通信协议. 比喻 将计算机服务运行理解为厨师做饭 ...