MFC常用操作
Posted 香瓣依生
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC常用操作相关的知识,希望对你有一定的参考价值。
目录:
1.文件操作
1.1.获取文件大小
2.路径操作
2.1.创建多级目录
1.文件操作
1.1.获取文件大小
// 获取文件大小 ULONGLONG size = 0; // 文件大小 CFileStatus fileStatus; if (CFile::GetStatus(csFullFile, fileStatus)) { size = fileStatus.m_size; }
代码注解:
①ULONGLONG:实际上表示的是整型数据(typedef unsigned long long ULONGLONG;)
②CFileStatus:一个记录文件信息的结构体变量,记录文件的创建时间、修改时间、最后访问时间、文件大小(单位:字节)、文件属性、文件绝对路径等信息[1]
struct CFileStatus { CTime m_ctime; // creation date/time of file CTime m_mtime; // last modification date/time of file CTime m_atime; // last access date/time of file ULONGLONG m_size; // logical size of file in bytes BYTE m_attribute; // logical OR of CFile::Attribute enum values BYTE _m_padding; // pad the structure to a WORD TCHAR m_szFullName[_MAX_PATH]; // absolute path name #ifdef _DEBUG void Dump(CDumpContext& dc) const; #endif };
其中的CTime是一个时间类,可以通过其成员函数GetYear()、GetMonth()、GetDay()、GetHour()、GetMinute()、GetSecond()获取时间。
2.路径操作
2.1.创建多级目录
// 功能:创建多级目录 bool CreateMultiDirectory(CString& csFullPath) { // 判断路径是否存在 if (PathIsDirectory(csFullPath)) { return true; } int iPos = csFullPath.ReverseFind(‘\\‘); CString csFormerPath = csFullPath.Left(iPos); if (!PathIsDirectory(csFormerPath)) { CreateMultiDirectory(csFormerPath); } CreateDirectory(csFullPath, NULL); // 创建路径 return true; }
代码注解:
①由于CreateDirectory()只能创建一个目录,因此要实现多级目录的创建,使用到了递归的方法
②PathIsDirectory()判断路径是否为一个有效路径,还有一个相似的函数PathFileExists()判断路径是否存在,使用需要加上头文件Shlwapi.h[2]
③ReverseFind()是字符串类CString的一个成员函数,用于逆向(从右往左)查找指定字符(字符串)第一次出现的位置
④Left()也是字符串类CString的一个成员函数,用于截取从字符串开始(位置0)到指定字符的字串
备注:
[1] CFileStatus结构中_m_padding还不确定含义
[2] 博文参考:windows路径操作API函数
以上是关于MFC常用操作的主要内容,如果未能解决你的问题,请参考以下文章