列出一个目录中所有文件的名字
操作系统 : Windows 11
(1)使用Qt实现
QDir dir("E:\\test");
qDebug()<<__FILE__<<"["<<__LINE__<<"]"<<dir.entryList(QDir::Files);
qDebug()<<__FILE__<<"["<<__LINE__<<"]"<<dir.entryList();
确实封装的好
(2)直接调用更原生的api
我让腾讯元宝帮我生成了一下代码
使用 Windows API (FindFirstFile
和 FindNextFile
)
这是 Windows 平台的原生方法
#include <iostream>
#include <windows.h>
#include <tchar.h>
void ListFiles(const std::wstring& directory) {
WIN32_FIND_DATA findData;
HANDLE hFind = FindFirstFile((directory + L"\\*").c_str(), &findData);
if (hFind == INVALID_HANDLE_VALUE) {
std::wcerr << L"找不到目录: " << directory << std::endl;
return;
}
do {
if (!(findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) {
std::wcout << findData.cFileName << std::endl;
}
} while (FindNextFile(hFind, &findData));
FindClose(hFind);
}
int main() {
ListFiles(L"E:\\test");
return 0;
}
说明:
FindFirstFile
初始化搜索,FindNextFile
继续搜索,FindClose
关闭句柄。- 路径末尾需加
*
或*.*
以匹配所有文件。