您的位置:首页 > 编程语言 > C语言/C++

C++文件操作——查找某一类文件的三种方法

2017-08-26 14:35 246 查看
方法一、利用WIN32的FindFirstFile与FindNextFile

FindFirstFile函数是查找到目录下的第一个文件或目录,FindNextFile函数是查找下一文件或目录。

根据文件名查找文件。该函数到一个文件夹(包括子文件夹)去搜索指定文件 如果要使用附加属性去搜索文件的话 可以使用FindFirstFileEx函数。
HANDLE FindFirstFile(
LPCTSTR lpFileName,//filename 文件名(包括路径)
LPWIN32_FIND_DATA lpFindFileData//databuffer 指向一个用于保存文件信息的结构体
);


返回值:

    如果调用成功返回一个句柄,可用来做为FindNextFile或 FindClose参数
    调用失败 返回为INVALID_HANDLE_VALUE(即-1) ,可调用GetLastError来获取错误信息

如果要用此函数去查找某类型的文件名时,举例代码如下:
查找D盘下的所有txt文件
WIN32_FIND_DATA fileinfo;
DWORD errorcode = 0;
HANDLE hFile;
TempPath="D:\\test\\*.txt";
hFile = FindFirstFile(TempPath,&fileinfo);
m_listbox.ResetContent();
while(hFile!=INVALID_HANDLE_VALUE&&errorcode!=ERROR_NO_MORE_FILES)
{
//
m_listbox.AddString(fileinfo.cFileName);
FindNextFile(hFile,&fileinfo);
errorcode=GetLastError();
}
if(errorcode==ERROR_NO_MORE_FILES)
{
MessageBox("检索结束");
}
CloseHandle(hFile);
方法二、利用C语言函数_findfirst 和 _findnext

_finddata_t File;
long FileHandle;
TempPath="D:\\test\\*.txt";
i = FileHandle = _findfirst(TempPath,&File);
m_listbox.ResetContent();
while( i != -1 )
{
m_listbox.AddString(File.name);
i = _findnext( FileHandle, &File );
}

_findclose(FileHandle);
方法三、利用CFileFind类
CFileFind finder;
BOOL bWorking = finder.FindFile(_T("D:\\test\\*.txt"));
while (bWorking)
{
bWorking = finder.FindNextFile();
m_listbox.AddString(finder.GetFileName());
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: