欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

c++:根据文件名在目录下找文件,返回全路径

程序员文章站 2022-06-12 10:09:53
...
//头文件是从项目文件拷贝来的,看不需要的自己删除(多字节环境)
#include <vector>
#include <list>
#include <string>
#include <fstream>
#include <io.h>
#include <direct.h>
#include <string>
#include <iostream>

//根据文件名搜索目录下的文件
void GetFormatFiles(string path, string& name, string fotmat);
int main()
{
		string name;
		//第三个是文件名字,第二个是返回值。
		GetFormatFiles("F:\\demo\\地铁燃弧\\测试数据\\GatherPath", name, strtemp);
}

//根据文件名在目录中寻找文件
//返回name全路径,format是文件名
//此函数可以根据怒需要自己修改
void GetFormatFiles(string path, string& name, string fotmat)
{
	//文件句柄    
	long long   hFile = 0;
	//文件信息    
	struct _finddata_t fileinfo;
	string p;
	int fotmatlength = fotmat.length();

	if ((hFile = _findfirst(p.assign(path).append("\\*").c_str(), &fileinfo)) != -1)
	{

		do
		{
			if ((fileinfo.attrib &  _A_SUBDIR))
			{
				if (strcmp(fileinfo.name, ".") != 0 && strcmp(fileinfo.name, "..") != 0)
				{
					GetFormatFiles(p.assign(path).append("\\").append(fileinfo.name), name, fotmat);
				}
			}
			else
			{
				string strtemp = fileinfo.name;
				//int maxchar = strtemp.length();
				//if (maxchar > fotmatlength)
				//{
					//string rightstr = strtemp.substr(maxchar - fotmatlength, fotmatlength);
					if (strtemp == fotmat)
					{
						name=(p.assign(path).append("\\").append(fileinfo.name));
						return;
					}
				//}
			}
		} while (_findnext(hFile, &fileinfo) == 0);
		_findclose(hFile);
	}

}
相关标签: c++