龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VC开发 >

解读VC++编程中的文件操作API和CFile类(7)

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
取得的是一个WIN32_FIND_DATA结构; typedef struct _WIN32_FIND_DATA { DWORD dwFileAttributes; //文件属性 FILETIME ftCreationTime; // 文件创建时间 FILETIME ftLastAccessTime; // 文件最后

  取得的是一个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;

  也可以利用另外一个函数来取得文件的信息:

BOOL GetFileInformationByHandle(
HANDLE hFile, // 文件的句柄
LPBY_HANDLE_FILE_INFORMATION lpFileInformation
);

  函数填充的是BY_HANDLE_FILE_INFORMATION结构体:

typedef struct _BY_HANDLE_FILE_INFORMATION {
 DWORD dwFileAttributes;
 FILETIME ftCreationTime;
 FILETIME ftLastAccessTime;
 FILETIME ftLastWriteTime;
 DWORD dwVolumeSerialNumber; // 文件所在的磁盘的序列号
 DWORD nFileSizeHigh;
 DWORD nFileSizeLow;
 DWORD nNumberOfLinks; //链接的数目
 DWORD nFileIndexHigh;
 DWORD nFileIndexLow;
} BY_HANDLE_FILE_INFORMATION;

  下面就举一个例子来实现:

HANDLE handle;
WIN32_FIND_DATA find_data;
handle = :: FindFirstFile("D:VSS",&find_data);
FindClose(handle);
find_data.dwFileAttributes = find_data.dwFileAttributes|FILE_ATTRIBUTE_READONLY;
::SetFileAttributes("D:VSS",find_data.dwFileAttributes);

  在上面的介绍中,除了可以设置文件的属性之外,在操作的过程当中也可以取得文件的其他一些信息,可以根据具体的需要来实现。

5.获取文件名,文件类型,文件长度,文件路径

  用利用CFile打开一个文件时,可以在利用成员函数

virtual CString GetFileName( ) const,
virtual CString GetFileTitle( ) const,
virtual CString GetFilePath( ) const,
virtual DWORD GetLength( ) const;throw( CFileException );

  来取得相关信息,如果一个文件的全路经是: c:windowswritemyfile.wri,则每个函数取得的是: myfile.wri, myfile, c:windowswritemyfile.wri. GetLength取得文件大小是按字节为单位的。

精彩图集

赞助商链接