当前位置: 源码素材网 » VC++教程 » 详情页

VC++获得文件属性代码+讲解

  •   时间:2019-08-08
  • 概述:文件属性

在对文件进行操作时,需要知道文件的属性,以方便打开它,本例就讨论如何获得文件的各种属性。在“文件”编辑框中输入文件的完整路径,然后单击【获得属性】按钮,获得该文件的大小、创建时间、修改时间、访问时间和访问属性等。

实现思路:MFC 中的CFile 提供了一个静态函数GetStatus 函数可以帮助获得文件属性,其定义为:

static BOOL PASCAL GetStatus(
LPCTSTR lpszFileName, //要获得属性的文件的路径,可以是绝对的,也可以是相对的
CFileStatus& rStatus ); //返回的属性结构

而CFileStatus 包括如下几个部分:

CTime m_ctime //文件的创建时间
CTime m_mtime //文件最后一次被修改的时间
CTime m_atime //文件最后一次被访问的时间
LONG m_size //文件的大小,单位为字节
char m_szFullName[_MAX_PATH] //文件的完整绝对路径
BYTE m_attribute //文件的另外一些属性,如只读、隐藏、系统、存盘等信息

代码编写思路及示例:
(1)通过AppWizard 生成基于对话框的应有程序GetFileAttr。
(2)给对话框增加显示文件大小的静态文本框,其ID 为IDC_STATIC_SIZE,增加显示创建时间的静态文本框, 其ID 为IDC_STATIC_CTIME , 增加显示修改时间的静态文本框, 其ID 为IDC_STATIC_MTIME,增加显示访问时间的静态文本框,其ID 为IDC_STATIC_ATIME,增加表示文件访问属性的4 个复选框, 其ID 分别是【只读】的IDC_CHECK_READONLY ,【隐藏】的IDC_CHECK_HIDDEN、【存盘】的IDC_CHECK_ARCHIVE、【系统】的IDC_CHECK_SYSTEM。
(3)给对话框增加【获得文件属性】按钮,其响应函数如下:

void CGetFileAttrDlg::OnGetAttr()
{
UpdateData(TRUE);
CFileStatus rStatus;
if(CFile::GetStatus(m_strFile,rStatus))
{
m_strSize.Format("%d 字节",rStatus.m_size);
m_strCTime = rStatus.m_ctime.Format("%Y 年%m 月%d 日 %H:%M:%S");
m_strMTime = rStatus.m_mtime.Format("%Y 年%m 月%d 日 %H:%M:%S");
m_strATime = rStatus.m_atime.Format("%Y 年%m 月%d 日 %H:%M:%S");
//判断是否只读
if((rStatus.m_attribute & 0x01) == 0x01)
m_bReadOnly = TRUE;
else
m_bReadOnly = FALSE;
//判断是否隐藏
if((rStatus.m_attribute & 0x02) == 0x02)
m_bHidden = TRUE;
else
m_bHidden = FALSE;
//判断是否存盘
if((rStatus.m_attribute & 0x20) == 0x20)
m_bArchive = TRUE;
else
m_bArchive = FALSE;
//判断是否是系统文件
if((rStatus.m_attribute & 0x04) == 0x04)
m_bSystem = TRUE;
else
m_bSystem = FALSE;
UpdateData(FALSE);
}
}

本例只获得了文件的一部分属性,读者可以查看CFileStatus 的详细定义,根据自己的需要决定获得哪些属性。

    相关声明:

      若“VC++获得文件属性代码+讲解”有损您的权益,请告之我们删除内容。
      部分文章来源于网络,版权归原作者所有。