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函数

 

posted @ 2017-11-08 15:52  香瓣依生  阅读(646)  评论(0编辑  收藏  举报