本文共 2072 字,大约阅读时间需要 6 分钟。
在网上找了一些代码都不能用,后来才知道是因为visual 2005下默认用的是UNICODE,所以不能输出文件名。下面是在2005下可以运行的代码,输出是文件的全路径,每个文件夹中所有文件的全路径保存在allFileName里面。代码是在一个网友的代码的基础上做了简单修改得到的,把FindFirstFile改成了 FindFirstFileA,其它小的修改就不缀述了,另外在运行代码的时候要把Project/properties里面的General的Use of MFC改成Use MFC in a shared DLL。这样代码就可以运行了:D
#include "stdafx.h"
#include <afxwin.h>#include "windows.h"#include <stdio.h>#include <string>#include <iostream>using namespace std;
string folder;
//读入一个文件夹中的所有文件的名字,包括子文件夹
void Find(TCHAR *szDir) { string allFilename; int count =0; //每个子文件夹中的文件个数 TCHAR szTempDir[MAX_PATH + 1];WIN32_FIND_DATAA FindFileData;
HANDLE hFind; strcpy((char *)szTempDir,(const char*)szDir); strcat((char*)szTempDir,"*.*"); //*.*表示所有类型文件 //读取第一个满足要求的文件 hFind =FindFirstFileA((LPCSTR)szTempDir,&FindFileData);if (hFind == INVALID_HANDLE_VALUE)
{ printf ("Invalid File Handle. Get LastError reports %d\n", GetLastError ()); return; }int a=1;
do
{ //如果遇到文件夹,递归 if( (FindFileData.dwFileAttributes &FILE_ATTRIBUTE_DIRECTORY ) && strcmp((const char*)FindFileData.cFileName,".") && strcmp((const char*)FindFileData.cFileName,"..")) {TCHAR szNewDir[MAX_PATH+1];
strcpy((char *)szNewDir,(const char *)szDir); strcat((char *)szNewDir,(const char*)FindFileData.cFileName); strcat((char *)szNewDir,"\\"); string folderTmp( (char *)FindFileData.cFileName ); folder = folderTmp; Find(szNewDir);}
//如果是.或者..继续读取下一个
else if(strcmp((const char*)FindFileData.cFileName,".")==0||strcmp((const char*)FindFileData.cFileName,"..")==0) { a=FindNextFileA(hFind,&FindFileData); }else //如果是文件
{ TCHAR fileDir[MAX_PATH+1]; strcpy((char *)fileDir,(const char *)szDir); strcat((char *)fileDir,(const char*)FindFileData.cFileName); string oneFilename( (char *)fileDir ); allFilename += oneFilename + "\n"; count++; }a =FindNextFileA(hFind,&FindFileData);//找到当前文件句柄的下一个文件
}while(a);
if( count > 0 )
{cout << "文件夹"<< folder<< "中的文件\n";
cout << "文件个数为: "<< count<< "\n";cout << allFilename<<"\n"; //ADDCODE //对文件的处理的代码就可以加在这里了allFilename.clear();}
FindClose(hFind);}void main()
{ Find((TCHAR*)("C:\\main\\")); //文件夹所在的路径getchar();}转载地址:https://blog.csdn.net/qq_36747842/article/details/75453578 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!