vc++基础班[22]---文件的基本操作2
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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现