用C++读取指定文件夹下的所有文件或文件夹信息
用FindFirstFile 和 FindNextFile 查找目标文件
包含的头文件:Windows.h(usually if you want to take operation on system by system function you should include this header file)
语法:HANDLE FindFirstFile(In LPCWSTR fileName,Out LPWIN32_FIND_DATA pfindFileData)
LPCWSTR 是重定义的类似于字符串指针的数据类型;
LPWIN32_FIND_DATA 是重定义的WIN32_FIND_DATA指针数据类型,一般使用&对WIN32_FIND_DATA 对象取址作为输入;
输入:
fileName: 指定目标文件的地址和文件名,可用通配符
fileName: 指定目标文件的地址和文件名,可用通配符
pfindFileData:指定记录文件信息的结构体的内存地址,FindFirstFile 将文件信息记录在以pfindFileData开始的地址中。
输出:
HANDLE fHandle: 查找句柄,用于 FindNextFile and FindClose 函数。
取文件名:
findFileData.cFileName: cFileName 是结构体对象findFileData的成员,存储的是文件的名字
示例代码:
#include
// 定义了WIN32_FIND_DATA,HANDLE等数据类型;FindFirstFile,FindNextFile等windows 系统函数
#include
#include
typedef std::string String;
typedef std::vector
fileVec;
void searchFile(fileVec& fileNameVec)
{
WIN32_FIND_DATA findFileData; // WIN32_FIND_DATA 为结构体类型,findFileData用于存储目标文件的信息(文件名,文件类型,大小等)
HANDLE fHandle; // 句柄,用于FindNextFile和FindClose
String fileName = "D:/chunkAnalyse/Data/*.txt";// 目标文件位置和名字,可以使用通配符
fHandle = FindFirstFile((LPCWSTR)fileName.c_str(), &findFileData); // 查找满足fileName要求的第一个文件,此时findFileData记录该文件的信息
fileNameVec.push_back(findFileData.cFileName); // 将第一个文件的名字存入vector容器中
while (FindNextFile(fHandle, &findFileData) != 0)
{
fileNameVec.push_back(findFileData.cFileName);
}
FindClose(fHandle);
}
总结:
当操作对象是系统资源的时候,一般而言我们都需要使用系统的接口函数,要调用window系统的接口我们通常都需要#include <Windows.h>, 在 Windows.h以及他所链接到的头文件中定义了
Windows的所有资料型态、函数调用、资料结构和常数识
别字, 如:
WINDEF.H 基本数据类型定义。
WINNT.H 支持Unicode的类型定义。
WINBASE.H Kernel(内核)函数。
WINUSER.H 用户界面函数。
WINGDI.H 图形设备接口函数。
for example,使用Windows接口我们可以读取系统时间。