1. 遍历文件系统所需的工具:
1) MFC的CFile并没有对遍历文件系统的功能进行面向对象包装,因此遍历文件系统必须使用较为原始、底层的Win32 API;
2) 大致步骤是:
i. 使用::SetCurrentDirectory函数设定当前处于什么目录下(Windows中叫做文件夹);
ii. 使用::FindFirstFile获取当前文件夹下的第一个文件的“查找句柄”,注意!不是该文件的文件句柄,而是一种查找句柄,Win32使用了一种“查找结构”来支持文件的遍历;
iii. 接着反复调用::FindNextFile获取下一个文件的“查找句柄”,其中可以判断该文件是否为文件夹,如果是文件夹的话还可以递归地进入该文件夹进行遍历;
3) 在使用Find函数的时候会将查找的文件的相关信息填写到一个叫做“查找结构”的结构体中,然后可以利用该结构体中该文件的信息进行一些操作,该结构就是WIN32_FIND_DATA结构体:
struct WIN32_FIND_DATA {
DWORD dwFileAttributes; // 文件属性,比如是文件还是文件夹等
FILETIME ftCreationTime; // 文件创建时间
FILETIME ftLastAccessTime; // 最近一次文件被访问的时间(包括读写)
FILETIME ftLastWriteTime; // 最近一次文件被写的时间
CHAR cFileName[MAX_PATH]; // 文件的完整绝对路径
...
};
!要判断查找的文件是文件还是文件夹只需要看一下dwFileAttribu