优化Traverse系列函数

本文介绍了如何优化C++中的Traverse系列函数,通过提供一份优化后的Traverse.cpp源码,展示了在Windows环境下提高遍历操作性能的具体实现。文章包含函数的头文件声明和调用示例,为读者提供了实际操作的参考。
摘要由CSDN通过智能技术生成

优化后的Traverse.cpp:


/*---- Includes ------------------------*/
#include "pch.h"
#include "windows.h"
#include <stdio.h>
#include "Traverse.h"

/*---- Static Function Statements ------------------------*/
/*
*@brief 遍历搜索[target_dir]路径下的目标文件,并对符合条件的文件执行[my_func]操作
*@param input: type: 1 查找[target_dir]下一级子目录中文件名为[target_format]的文件
					 2 查找[target_dir]目录中文件名为[target_format]的文件
					 3 遍历搜索[target_dir]路径下的所有文件和目录
			   target_dir: 目标搜索路径(绝对路径)
			   show: 0不打印搜索详情 1打印搜索详情
			   my_func: 对文件进行的操作
		output: sum[0]: [target_dir]中所有目录个数
				sum[1]: [target_dir]中所有文件个数
*/
static void TraverseDir(int type, char *target_dir, char *target_format, int show, int *sum, file_operation my_func)
{
   
	HANDLE file;
	WIN32_FIND_DATAA file_data;
	WIN32_FIND_DATA pNextInfo;
	char file_dir[1024];
	memset(file_dir, 0x00, sizeof(file_dir));
	char sub_dir[1024];
	char wcharTochar_str[1024];
	bool attributes_match = false;

	if ((1 == type) || (3 == type))
	{
   
		sprintf(file_dir, "%s\\*", target_dir);
		if (1 == show)
		{
   
			printf("%s\n", target_dir);
		}
	}
	else if (2 == type)
	{
   
		sprintf(file_dir, "%s\\%s", target_dir, target_format);
		if (1 == show)
		{
   
			printf("%s\n", file_dir);
		}
	}

	file = FindFirstFileA(file_dir, &file_data);
	if (file == INVALID_HANDLE_VALUE)
	{
   
		//printf("搜索文件失败\n");
	}
	else
	{
   
		if (file_data.cFileName[0] != '.')
		{
   

			if (file_data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
			{
   
				attributes_match = true;
				if (type & 0x01)
				{
   
					if (show)
					{
   
						for (int x = 0; x < show; x++)
						{
   
							printf("└---");
						
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值