VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

有编程疑问吗?还请到提问专区发帖提问!
搜索
查看: 282|回复: 1

VC++基础班-[22]文件的基本操作2

[复制链接]
01_avatar_middle
online_admins admin 发表于 2018-2-1 00:32:00 | 显示全部楼层 |阅读模式
------------------------------------------ Begin ----------------------------------------
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 实现;
这回可以成功的将只读属性的文件删除了……方法就是去除文件的只读属性后再进行删除操作;

  1. BOOL DelReadOnlyFile(LPCTSTR lpszPath)
  2. {
  3.         DWORD dwRet = GetFileAttributes(lpszPath);
  4.         if (dwRet == INVALID_FILE_ATTRIBUTES) return FALSE;

  5.         if (dwRet & FILE_ATTRIBUTE_READONLY){
  6.                 dwRet &= ~FILE_ATTRIBUTE_READONLY;
  7.                 SetFileAttributes(lpszPath, dwRet);
  8.         }

  9.         return DeleteFile(lpszPath);
  10. }
复制代码


⑥、判断文件是否存在:方法也有很多种:
1>、_access 函数;
2>、CreateFile 函数;
3>、FindFirstFile 函数;
4>、GetFileAttributes 函数;
5>、PathFileExists(是 Shell Lightweight Utility APIs 函数:Header: Declared in Shlwapi.h Import Library: Shlwapi.lib)

这里面给大家使用 GetFileAttributes 函数进行讲解:
  1. BOOL TargetIsExist(LPCTSTR lpszPath)
  2. {
  3.         BOOL bRet = TRUE;
  4.         DWORD dwRet = GetFileAttributes(lpszPath);
  5.         if (dwRet == INVALID_FILE_ATTRIBUTES && GetLastError() == ERROR_FILE_NOT_FOUND){
  6.                 bRet = FALSE;
  7.         }
  8.         return bRet;
  9. }
复制代码


⑦、判断给定路径是文件还是目录:
1>、GetFileAttributes 函数;
2>、PathIsDirectory(是 Shell Lightweight Utility APIs 函数:Header: Declared in Shlwapi.h Import Library: Shlwapi.lib)
3>、……

这里面给大家使用 GetFileAttributes 函数进行讲解:
  1. int TargetIsDirectory(LPCTSTR lpszPath)
  2. {
  3.         int iRet = -1;
  4.         DWORD dwRet = GetFileAttributes(lpszPath);
  5.         if (dwRet == INVALID_FILE_ATTRIBUTES){
  6.                 iRet = -1;
  7.         }else if (dwRet & FILE_ATTRIBUTE_DIRECTORY){
  8.                 iRet = 1;
  9.         }else{
  10.                 iRet = 0;
  11.         }

  12.         return iRet;
  13. }
复制代码

------------------------------------- End -------------------------------------------


相关课程演示细节还请观看视频教程!
本套教程由VC驿站原创,提供视频教程+售后答疑服务!
教程介绍及详情请见:https://www.cctry.com/thread-17282-1-1.html
VC驿站Vip会员详情请见:https://www.cctry.com/static/vip/index.html




上一篇:VC++基础班-[21]文件的基本操作之CFile
下一篇:VC++基础班-[23]文件夹的基本操作

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2018-12-10 13:30

Powered by Discuz! X3.4

© 2009-2018 cctry.com

快速回复 返回顶部 返回列表