Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Kaxperday en 8 Diciembre 2015, 01:00 am



Título: Problema listando archivos de un directorio C++
Publicado por: Kaxperday en 8 Diciembre 2015, 01:00 am
Buenas os dejo el código:

Código
  1. vector<string> listar_archivos(string _directorio)
  2. {
  3. WIN32_FIND_DATAA ffd;
  4. HANDLE hFind;
  5. vector<string> retorno;
  6.  
  7. hFind = FindFirstFileA(_directorio.c_str(), &ffd);
  8.  
  9. if (hFind == INVALID_HANDLE_VALUE)
  10. return retorno;
  11. do{
  12. printf("%x\n", ffd.dwFileAttributes);
  13. if (ffd.dwFileAttributes & FILE_ATTRIBUTE_ARCHIVE | FILE_ATTRIBUTE_HIDDEN))
  14. retorno.push_back(ffd.cFileName);
  15. } while (FindNextFileA(hFind, &ffd) != 0);
  16. for each(string s in retorno)cout << s;
  17. return retorno;
  18. }
  19.  

El problema está en que en ese directorio tengo 6 archivos con los atributos FILE_ATTRIBUTE_ARCHIVE y FILE_ATTRIBUTE_HIDDEN que puse con SetAtributtes pero sin embargo no aparecen al listarlos al final, también elimine la condición del if en el bucle y la salida era la misma no aparecen, también probé a listar archivos del desktop por ejemplo y no salía nada.

Lo que obtengo al mostrar la variable "retorno" elemento a elemento es un solo elemento que es el nombre del directorio del que quiero ver sus archivos, no sus archivos.

¿que falla?, saludos y gracias.

Vuelve edicion delicatesse:[/glow][/shadow] Acabo de solucionarlo había que añadir a el directorio "\\*" como pone aqui:

https://msdn.microsoft.com/en-us/library/windows/desktop/aa365200(v=vs.85).aspx

Un saludo.