更新时间:2015-11-01 22:10:38浏览次数:1+次
我们看下它的实现代码:
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;
通过这段代码我们可以总计有以下9种:文件的标题名、文件的属性(只读、存档,隐藏等)、文件的创建时间、文件的最后访问时间、文件的最后修改时间、文件大小的高位双字、文件大小的低位双字、保留、保留。在这里只有文件标题名和文件的长度可以通过CFile类比较方便的获得,而对于其他几种属性的获取和设置就无能为力了。WIN32_FIND_DATA ffd ;
HANDLE hFind = FindFirstFile("c:\\test.dat",&ffd);
我们看个小例子,来理解FindFirstFile的用法:
void CFindFileDlg::FindFile(CString szFileName)
{
CString szFindName = szFileName;
///需要查找的文件名
szFindName.Insert(szFileName.GetLength(), "\\*.*");
WIN32_FIND_DATA fd_Data;
memset(&fd_Data, 0, sizeof(WIN32_FIND_DATA));
HANDLE hFindFile =FindFirstFile(szFindName, &fd_Data);
if (hFindFile != NULL)
{
while (FindNextFile(hFindFile, &fd_Data))
{
if (fd_Data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY &&
(strcmp(fd_Data.cFileName, ".") != 0) &&
(strcmp(fd_Data.cFileName, "..") != 0) &&
(strcmp(fd_Data.cFileName, "...") != 0) ) //目录
{
CString szFullPath = szFileName;
szFullPath.Insert(szFullPath.GetLength(), "\\");
szFullPath.Insert(szFullPath.GetLength(), fd_Data.cFileName);
FindFile(szFullPath);
}
else if (!(fd_Data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) //文件
{
CString szFullName = szFileName;
szFullName.Insert(szFullName.GetLength(), "\\");
szFullName.Insert(szFullName.GetLength(), fd_Data.cFileName);
if (stricmp(m_szFindFile.GetBuffer(0), fd_Data.cFileName) == 0)
{
m_RetList.AddString(szFullName);
}
}
}
}
FindClose(hFindFile);
}
这段代码是实现我刚刚看书学习中的一个例子-查找电脑中的某个文件---源码中的一段代码。
if(findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
这个判断语句是通过 将dwFileAttributes和FILE_ATTRIBUTE_DIRECTORY做位的与运算
因为目录类在文件属性里,所以通过 findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY
可以判断 dwFileAttributes项的值中是否是 FILE_ATTRIBUTE_DIRECTORY(目录),即判断所找到的项目是不是文件夹
相关资讯