首页 VC++实现对文件属性的获取与更改

VC++实现对文件属性的获取与更改

举报
开通vip

VC++实现对文件属性的获取与更改在VC++下对文件属性的获取与更改 摘要:本文讲述了在Visual C++ 下编程实现对磁盘文件的属性进行获取以及更改的一般方法,并给出部分相关的关键代码。   一、 引言    文件是数据在磁盘上最常用的一种存放形式,也是在程序设计中与之经常打交道的一种编程对象,不少程序尤其是数据传输和处理类的应用程序更是需要频繁的创 建、读取和写入文件。对于一些要求不是很严格的程序,我们往往只关心文件的内容是否正确、文件大小是否有增减或是再严格一些,看文件名是否符合规定等等。 以上这些要素对于大多数程序而言显然是可以满...

VC++实现对文件属性的获取与更改
在VC++下对文件属性的获取与更改 摘要:本文讲述了在Visual C++ 下编程实现对磁盘文件的属性进行获取以及更改的一般方法,并给出部分相关的关键代码。   一、 引言    文件是数据在磁盘上最常用的一种存放形式,也是在程序 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 中与之经常打交道的一种编程对象,不少程序尤其是数据传输和处理类的应用程序更是需要频繁的创 建、读取和写入文件。对于一些要求不是很严格的程序,我们往往只关心文件的内容是否正确、文件大小是否有增减或是再严格一些,看文件名是否符合规定等等。 以上这些要素对于大多数程序而言显然是可以满足实际需求的,但对于某些特殊行业的一些有着比较严格要求的软件系统,仅有以上要素还是远远不够的,往往还需 要对文件的所有属性诸如文件的创建时间、文件的最后访问时间、文件的最后修改时间等等进行提取处理与重新设置。   二、 WIN32_FIND_DATA结构   关于文件的全部属性信息,总计有以下以下9种:文件的标 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 名、文件的属性(只读、存档,隐藏等)、文件的创建时间、文件的最后访问时间、文件的最后修改时间、文件大小的高位双字、文件大小的低位双字、保留、保留。在这里只有文件标题名和文件的长度可以通过CFile类比较方便的获得,而对于其他几种属性的获取和设置就无能为力了。   在用findfirst()和findnext() 关于工期滞后的函关于工程严重滞后的函关于工程进度滞后的回复函关于征求同志党风廉政意见的函关于征求廉洁自律情况的复函 数去查找磁盘文件时经常使用的一个数据结构WIN32_FIND_DATA的成员变量里包含了以上所有的文件属性,因此可以通过这个结构作为获取和更改文件属性的手段。该结构的内容如下: typedef struct _WIN32_FIND_DATA {   DWORD dwFileAttributes; //文件属性   FILETIME ftCreationTime; // 文件创建时间   FILETIME ftLastAccessTime; // 文件最后一次访问时间   FILETIME ftLastWriteTime; // 文件最后一次修改时间   DWORD nFileSizeHigh; // 文件长度高32位   DWORD nFileSizeLow; // 文件长度低32位   DWORD dwReserved0; // 系统保留   DWORD dwReserved1; // 系统保留   TCHAR cFileName[ MAX_PATH ]; // 长文件名   TCHAR cAlternateFileName[ 14 ]; // 8.3格式文件名 } WIN32_FIND_DATA, *PWIN32_FIND_DATA;   可以通过FindFirstFile()函数根据当前的文件存放路径查找该文件来把待操作文件的相关属性读取到WIN32_FIND_DATA结构中去: WIN32_FIND_DATA ffd ; HANDLE hFind = FindFirstFile("c:\\test.dat",&ffd);   在使用这个结构时不能手工修改这个结构中的任何数据,结构对于开发人员来说只能作为一个只读数据,其所有的成员变量都会由系统完成填写。在MSDN帮助中可以查找到关于WIN32_FIND_DATA结构的更加详细的说明。   三、 文件属性信息的获取与更改   为了更好的保存获取到的文件属性信息,对应于文件属性构造一个自定义的FILE_INFO数据结构,获取的属性信息可暂存于此: typedef struct _FILE_INFO {   TCHAR szFileTitle[128]; //文件的标题名   DWORD dwFileAttributes; //文件的属性   FILETIME ftCreationTime; //文件的创建时间   FILETIME ftLastAccessTime; //文件的最后访问时间   FILETIME ftLastWriteTime; //文件的最后修改时间   DWORD nFileSizeHigh; //文件大小的高位双字   DWORD nFileSizeLow; //文件大小的低位双字   DWORD dwReserved0; //保留,为0   DWORD dwReserved1; //保留,为0 } FILE_INFO, * PFILE_INFO;    首先用FindFirstFile()函数将文件属性获取到WIN32_FIND_DATA 结构对象FindFileData中去,之后可以用FindClose()将其关闭,并把FindFileData中的有关文件属性信息的内容复制到自定 义结构FILE_INFO的结构对象FileInfo中备用。下面是关于这部分描述的部分关键代码: //声明结构对象 FILE_INFO FileInfo; WIN32_FIND_DATA FindFileData; …… //获取文件属性信息 FindClose(FindFirstFile("Test.txt",&FindFileData)); memset(&FileInfo,0,sizeof(FILE_INFO)); …… //将文件属性信息保存到FileInfo中备用 strcpy(FileInfo.szFileTitle,myFile.GetFileTitle()); FileInfo.dwFileAttributes = FindFileData.dwFileAttributes; FileInfo.ftCreationTime = FindFileData.ftCreationTime; FileInfo.ftLastAccessTime = FindFileData.ftLastAccessTime; FileInfo.ftLastWriteTime = FindFileData.ftLastWriteTime; FileInfo.nFileSizeHigh = FindFileData.nFileSizeHigh; FileInfo.nFileSizeLow = FindFileData.nFileSizeLow; ……    在获取到文件的原始属性信息后既可以原封不动的将属性重新写到文件,也可以对其中某一项或某几项属性内容进行修改后再行写入文件,从而达到更改文件属性 的目的。比如可以用SetFileTime()函数设置文件的创建时间、最近一次访问时间以及最近一次修改的时间等等: SetFileTime((HANDLE)destFile.m_hFile, //待写入的文件句柄 &FileInfo.ftCreationTime, //文件的创建时间 &FileInfo.ftLastAccessTime, //文件最近一次的访问时间 &FileInfo.ftLastWriteTime); //文件最近一次的修改时间   也可以用SetFileAttributes() 函数实现对文件属性的修改: SetFileAttributes(FileInfo.szFileTitle,FileInfo.dwFileAttributes);   至于文件名的修改则更加简单,直接在创建文件时在CreateFile()或CFile类的成员函数Open里直接对文件名参数进行设置即可。   小结:本 文通过对WIN32_FIND_DATA结构和SetFileTime()、SetFileAttributes()等主要函数实现了对磁盘文件的相关属 性信息的获取与修改。用此技术可以在通讯等对文件有严格要求的应用领域实现文件全部信息(包括文件内容、文件名以及文件属性等)的完整传送。本文所述程序 在Windows 98下由Microsoft Visual C++ 6.0编译调试通过。
本文档为【VC++实现对文件属性的获取与更改】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_348501
暂无简介~
格式:doc
大小:26KB
软件:Word
页数:0
分类:生活休闲
上传时间:2017-09-19
浏览量:14