bool IsStringEndWithPostfix(wstring DirName, wstring PostFix) int str_len1 = DirName.size(); int str_len2 = PostFix.size(); int pos = DirName.rfind(PostFix); bool Valid = false; if ((pos >= 0) && (pos == str_len1 - str_len2)) Valid = true; return Valid; void SearchFilesInDir(wstring DirName, wstring PostFix, vector & FileNameList) std::wstring pattern(DirName); pattern.append(L"\\*"); WIN32_FIND_DATA data; HANDLE hFind; vector FolderNameList; if ((hFind = FindFirstFile(pattern.c_str(), &data)) != INVALID_HANDLE_VALUE) { bool valid0 = !IsStringEndWithPostfix(data.cFileName, L"."); if (valid0) if (data.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY) // is folder FolderNameList.push_back(DirName + L"\\" + data.cFileName); // is file bool valid1 = IsStringEndWithPostfix(data.cFileName, PostFix); bool valid2 = IsStringEndWithPostfix(data.cFileName, L".tif"); if (valid1 && valid2) FileNameList.push_back(DirName + L"\\" + data.cFileName); // wprintf(L"search file:%s\n", data.cFileName); } while (FindNextFile(hFind, &data) != 0); FindClose(hFind); // search sub-folders for (int i = 0; i < FolderNameList.size(); i++) SearchFilesInDir(FolderNameList[i], PostFix, FileNameList); int main() wchar_t* str = L"G:\\test images"; wstring DirName = str; wstring PostFix = L".tif"; vector FileNameList; SearchFilesInDir(DirName, PostFix, FileNameList); int FileNumber = FileNameList.size(); printf("file number:%d\n", FileNumber); CString CurStr; for (int cnt = 0; cnt < FileNumber; cnt++) CurStr = FileNameList[cnt].c_str(); wprintf(L"filename: %s\n", CurStr); return 0;

参考了部分网上的代码

linux系统下文件搜索可以用popen等方式通过调用shell命令来实现。

#include &lt;iostream&gt;#include &lt;vector&gt;using namespace std;#include &lt;afx.h&gt;#include &lt;windows.h&gt;bool IsStringEndWithPostfix(wstring DirName, wstring PostFix){ int str_l...
采用 C++ 编写,只有一个函数。 第一个参数为必填的输入参数,填入待查找的 文件夹 路径 第二个参数为输出参数,输出匹配到的 文件 信息(包括 文件 名, 文件 路径,和一个对应WIN32_FIND_DATA结构) 地三个参数为可选的输入参数,输入扩展名信息,扩展名格式为(.cpp, *.cpp, cpp)三者都可,大小写不区分,如果为空则输出目录下的所以 文件 ,默认是输出所有 文件 第四个参数为可选的输入参数,表明是否递归,如果为TRUE则递归子 文件夹 查找,如果为FALSE则不递归,默认是递归查找 BOOL FindFile(const WCHAR *szFolderPath, map<wstring, pair> &mapFile, const WCHAR *szExtendName = NULL, BOOL bRecursion = TRUE);
MBR(Master Boot Record,主引导记录)又叫主引导扇区,是计算机开机后访问硬盘时必须要读取的首个扇区,它在硬盘上的三维地址为0柱面,0磁头,1扇区(整个硬盘第一个扇区)。 在深入探讨主引导扇区内部结构的时候,有时也将其开头的446个字节内容特指为主引导记录(MBR),其后是4个16字节的“磁盘分区表”DPT(主分区表入口),以及2字节的结束...
C++ 文件 查找 在 C++ 中我们要如何查找 文件 呢?我们需要一个结构体和几个大家可能不太熟悉的函数。这些函数和结构体在的头 文件 中,结构体为struct _finddata_t ,函数为_findfirst、_findnext和_fineclose。具体如何使用,下面来一起看看吧 _findfirst与_findnext查找 文件 一、这两个函数均在io.h里面。 二、首先了解一下一个 文件 结构体: struct _finddata_t { unsigned attrib; time_t time_create; time_t time_access; time_t time_wr
在日常生活中,我们打开我们的电脑操作各种 文件 。我们都知道, 文件 数据都存储在硬盘上,但是,硬盘中存储的数据都是0、1的二进制数据,我们的电脑怎么从这一大堆0、1数据中知道哪个是哪个 文件 呢? 这就是 文件 系统 在起作用,它对硬盘的数据设置格式规则,存储数据的时候,就按这个存储规则进行存储,那么,在读取数据 文件 的时候,再按照相应规则读取还原数据,就形成了我们看到的 文件 了。 现在,本文就介绍目前比...
Windows 系统 中,我们可以使用C语言编写程序来遍历 文件夹 并获取 文件 类型。首先,我们需要包含相应的头 文件 和定义一些变量来存储 文件夹 路径和 文件 类型信息。然后,我们使用 Windows API提供的函数来遍历 文件夹 ,并对每一个 文件 进行处理。 我们可以使用FindFirstFile和FindNextFile函数来遍历 文件夹 中的每一个 文件 。在处理每个 文件 时,我们可以通过 文件 名的后缀来判断 文件 类型。比如,我们可以通过查找 文件 名中最后一个点(.)后面的字符串来获取 文件 的后缀名,从而确定 文件 类型。 在获取 文件 类型后,我们可以将 文件 名和 文件 类型信息存储在一个数组或者链表中,以便之后进行处理或者输出。对于不同类型的 文件 ,我们可以使用不同的处理方式,比如打印 文件 名和类型,或者进行其他操作。 总之,通过使用C语言和 Windows API提供的函数,我们可以编写程序来遍历 文件夹 并获取 文件 类型信息。这样的程序可以帮助我们对 文件夹 中的 文件 进行分类、整理或者其他处理。