利用FindFirstFile()可以通过路径得到文件的很多属性。关于文件的全部属性信息,总计有以下以下9 种:文件的标题名、文件的属性(只读、存档,隐藏等)、文件的创建时间、文件的最后访问时间、文件的最后修改时间、文件大小的高位双字、文件大小的低位双字、保留、保留。其中使用的结构体如下:
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结构中去:
在获取文件大小的时候,DWORD 就是32位 = 4G了,如果文件大小太大不得不采取64位来存储。
DWORD nFileSizeHigh; // 64位的高位
DWORD nFileSizeLow; // 64位的低位
拼在一起就是完整的文件长度了。
具体的拼接方法为:
文件大小为:(fileInfo.nFileSizeHigh * (MAXDWORD+1)) + fileInfo.nFileSizeLow