对目录内所有文件(包括子文件夹文件)读取处理

来源:互联网 发布:java数据脱敏技术 编辑:程序博客网 时间:2024/05/22 08:19
#include <windows.h>
#include <iostream>#include <cstdio>#include <cstring>#include <stack>using namespace std;void pathcmp(char *path,char *wfd,char *filePath){int l1 = strlen(path);int l2 = strlen(wfd);int pos = 0;for (int i = 0 ; i < l1 ; i++)filePath[pos++] = path[i];filePath[pos++] = '\\';for (int i = 0 ; i < l2 ; i++)filePath[pos++] = wfd[i];filePath[pos] = '\0';}void getSolveName(char *path,char *wfd,int Case,char *solveName){int l1 = strlen(path);int l2 = strlen(wfd)-4;int pos = 0;for (int i = 0 ; i < l1 ; i++)solveName[pos++] = path[i];solveName[pos++] = '\\';for (int i = 0 ; i < l2 ; i++)solveName[pos++] = wfd[i];solveName[pos++] = '_';stack<int> s;while (Case){s.push(Case%10);Case /= 10;}while (!s.empty()){solveName[pos++] = s.top() + '0';s.pop();}solveName[pos++] = '.';solveName[pos++] = 't';solveName[pos++] = 'x';solveName[pos++] = 't';solveName[pos] = '\0';}bool Search(char *Path){HANDLE hFind;WIN32_FIND_DATA wfd;ZeroMemory(&wfd,sizeof(WIN32_FIND_DATA));char PathTemp[512];memset(PathTemp,0,sizeof(PathTemp));sprintf(PathTemp,"%s\\*.*",Path);hFind=FindFirstFile(PathTemp,&wfd);if(INVALID_HANDLE_VALUE==hFind)//如果没有找到或者查找失败{//MessageBox(NULL,"INVALID_HANDLE_VALUE","FindFirstFile",MB_OK);return false;}do{if('.'==wfd.cFileName[0])//如果是当前目录或者是上级目录,就直接进入下一次循环{continue;}if(wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)//如果该文件是文件夹{sprintf(PathTemp,"%s\\%s",Path,wfd.cFileName);//MessageBox(NULL,PathTemp,"Directory",MB_OK);//Search(PathTemp,File);//进入该文件夹继续搜索(递归)Search(PathTemp);//进入该文件夹继续搜索(递归)}else{//MessageBox(NULL,"Found",wfd.cFileName,MB_OK);//找到文件//找到文件后对文件进行处理char filePath[100];//文件地址以及文件名 pathcmp(Path,wfd.cFileName,filePath);//printf ("%s\n",wfd.cFileName);FILE *fp_que = fopen(filePath,"r");int Case = 1;int a,b;while (~fscanf (fp_que,"%d %d",&a,&b) && fp_que != NULL){char solveName[100];getSolveName(Path,wfd.cFileName,Case++,solveName);FILE *fp_solution = fopen(solveName,"w");fprintf (fp_solution,"%d\n",a+b);fclose(fp_solution);//关闭输出文件 }fclose(fp_que);//关闭输入文件 }}while(FindNextFile(hFind,&wfd));//文件查找的条件FindClose(hFind);//关闭FIND句柄return true;}int main(){Search("D:\\a+b");return 0;}




网上查的一部分,自己补了一部分,码一下,以后也许会用到。

0 0