折叠 编辑本段 头文件
#includ来自e <windows.h>
折叠 编辑本段 基本信息
关于文件的全部属性还易居侵念音营叫复己信息。总计有以下以下9种:文件的标题名、文件的属性(只读、存档,隐藏等)、文件的创建时间、文件的最后访问时间、文件的最后修改时间、文件大小的高位双字、文件大小的低位双字、保留、保留。在这里只有文件标题名和文件的长度可以通过CFile类比较360百科方便的获得,而对于其他几种属性的获取和设置就无能为力了。
该结构的内容如下:
typedef struct _调着如年WIN32_FIND_DATA {
DWORD dwFileA钢广数ttributes; //文件属性
FILETIME ftCreationTime; // 文件创建时间
F适尼刻ILETIME ftLastAccessTime; // 文件最后一次访问时间
FILETIME ftLastWriteTime; // 文件最后一次修改时间
DWORD nFileSizeHigh; // 文件长度高32位
DWORD nFileSizeLow; // 文件长度低32位
DWORD dwReserved0; // 系统保留
DWOR受D dwReserved1; // 系统保留
TCHAR cFileName[ MAX_PATH ]; // 长文件名
TCHAR 向地断留速医重曾cAlternateFileName[ 14 ]; // 8.3格式文件名
} W善越IN32_FIND_DAT发扬联A, *PWIN32_FIND_DATA;
可以通过FindFirstFile()函数根据当前的文件存放路径查找该文件来把待操作文件的相关属性读取到WI石边足语N32_FIND_DATA结构中去:
WIN32_FIND_DATA ffd ;
HANDLE hFind = FindFirst见买适止希室广附长致File("c:\\test.dat",&ffd);
在使用这个结构时不能手工修改这个结构中的任何数据,结构对于开发人员来说只能作为一个只读数据,精章七乎倒费食促定都其所有的成员变量都会由系统完成填写。在MSDN帮助中可以查找到关于WIN32_FIND_DATA结构的更加详细的说明。
折叠 编辑本段 文件属性
File Attribute Constants
File attributes are metadata values stored by the file system on disk and are used by the sy普概级卫成前北stem and are available to developers via various file I/O APIs. 配叶否拉输之For a list of related APIs and topics, see the 思出客绿乱米源斤某See Also s她统剧认振损ection.
折叠 编辑本段 信息获取
为了更好的保存获取到的文件属性信息,对应于文件属性构造一个自定义的FILE_INFO数据结构,获取的刻属性信息可暂存于错此:
typedef s水况率雷转truct _FILE_INFO {
TCHAR szFileTitle[128]; //文件的标题名
DWO括扩客念注沙她言直RD dwFileAttributes; //文件的属性
FILETIME ftCreationTime; //文件的创建时间
FILETIME ftLastAccessT争官南章帝副五质构电ime; //文件的最后多讨屋队剂各顾践校曾访问时间
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的结构对象Fi角晚leInfo中备用。下面是关于这部分描述的部分关键代码:
//声明结构对象
FILE_INFO FileInfo;
WIN32_FIND_DATA FindFileData;
……
//获取文件属性信息
FindClose(FindFirstFile("Test.txt",&FindFileData));
mem鲜氢万持推落试仍成帝江set(&Fil料计百误企eInfo,0,siz八发派主项给玉引顾eof(FILE坐政停称既顾林_INFO));
……
//将文件属性信息保存到FileInfo中备用
strcpy(FileInfo.szFileTitle,myFile.GetFileTitle());
FileI她实质草乱留乎往身为宁nfo.dwFileAttr即数湖心蒸翻三ibutes = FindFileData.dwF宜煤甲划祖声世万来ileAttributes;
FileInfo.ftCreationTime = FindFileData.ftCreationTime;
FileInfo.ftLastAccessTi史击妒me = FindFileData.ftLastAccessTime理;
FileInfo.ftLastWriteTime = FindFileData.ftLastWriteTime;
F婷ileInfo.节际时叫记排nFileSizeHigh = FindFileData.nFileSizeHigh;
FileInfo.nFileSizeLow = FindFileData.nFileSizeLow;
……
在获取到文件的原始属性信息后既可以原封不动的将属性重新写到文件,也可以对其中某一项或某几项属性内容进行修改后再附苗既情秋临司品沙可错行写入文件,从而达到更改文件属性的目的。比如可以用SetFileTime()函数设置文件的创建时间、最近一次访问时间以及套抓名亚促最近一次修改的时间等等:
SetFileTime((HANDLE)destFile.m_hFile, //待写入的文件句柄
&FileIn者举印村容度没若今fo.ftCrea块身跳子食医tionTime, //文件的创建时间
&FileInfo.ftLastAccessTime, //文件最近一次的访问时间
&FileInfo.ftLastWriteTime); //文件最近一次的修改时间
也可以用SetFileAttributes() 函数实现对文件属性的修改:
SetFileAttributes(FileInfo.szFileTitle,FileInfo.dwFileAttributes);
至于文件名的修改则更加简单,直接在创建文件时在CreateFile()或CFile类的成员函数Open里直接对文件名参数进行设置即可。
移动一个文件,一般可使用:
B事犯什决修广让干上零过OOL WINAPI MoveFile(LPCSTR Existing, LP入尼计错客防方CSTR Target);
其中 Existing是现有文件或目录,Target是目标文件或目录。此函数还可以用来对文件改名。例:
MoveFile("D:\\Temp\\a.txt", "E:\\MyPath\\b.txt"); 将D:\Temp\a.txt移动到E:守根措接仍岩工\MyPath并误另那阿紧配讨任伯愿改名为b.txt
>API中的CopyFile:
BOOL WINAPI CopyFile(LPCSTR oldFileName, LPCSTR newFileName, BOOL failIfEx检活介抗抓冷风虽ists);
oldFileName: 原始文件名;
newFileName: 目标文件名;
failIfExists: 目标文件已存在时的处理办法。TRUE则不覆盖并返回失败标记,FALSE则覆盖。
返回值:TRUE代表成紧款它治此定任功,FALSE代表失阶向药老抗威干败。
>粘贴又是哪个函数呢沉亲验?
粘贴的功能不是一个函数能够实现的.对剪贴板的操作Windows有一系列函数.粘贴必须要用的是 O额着厚但单元教愿还客实penClipboard(), GetCipboardData()和CloseClipboard().
拷贝-粘贴的对象为文本或其他二进数据(如图像)时可能还要辅助其他的API.