Cómo usar C++ para recorrer carpetas, leer el contenido de documentos y guardar en cadenas
Utilice la API estándar en WIN32. El código es el siguiente. Si utiliza la biblioteca MFC, puede consultar las instrucciones de uso de CFileFind.
void traversal_dir( char *prefijo, char *ruta)
{
nombre de archivo char[512], nombre de ruta[512];
size_t pathlen = 0;
char szFind[MAX_PATH];
WIN32_FIND_DATA FindFileData;
strcpy(szFind,ruta);
strcat(szFind,"/*.*");
HANDLE hFind=::FindFirstFile(szFind,&FindFileData);
if(INVALID_HANDLE_VALUE == hFind)
{
return;
}
while(TRUE)
{
if (FindFileData. cFileName[0] != '.')
{
sprintf(nombre de archivo, "%s/%s", ruta,FindFileData.cFileName);
sprintf(pathname, "%s%s", prefix, FindFileData.cFileName);
//Si es una búsqueda recursiva en un directorio
if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
strcat(nombre de ruta, "/");
traversal_dir(nombre de ruta, nombre de archivo);
}
else
{
ARCHIVO *f = NULL;
char *buf = NULL;
if((f= fopen(nombre de archivo,"r"))==NULL)
{
printf("¡Error!\n"); retorno;
} p>
size_t nFileSize = ftell(f);
buf = new char[nFileSize+1];
fread(buf, nFileSize+1, 1,f);
printf("%s\n", buf);
eliminar []buf;
fclose(f)
}
}
if(!FindNextFile
(hFind,&FindFileData)) descanso;
}
FindClose(hFind);
}