Manejo de Carpetas en C

Iniciado por Shevy, 14 Enero 2014, 19:55 PM

0 Miembros y 1 Visitante están viendo este tema.

Shevy

Hola muy buenas. He estado buscando por la web algún tutorial de manejo de carpetas en C pero no encontré nada. Si alguien conoce de página me sería de gran ayuda.

x64core

Cita de: Shevy en 14 Enero 2014, 19:55 PM
Hola muy buenas. He estado buscando por la web algún tutorial de manejo de carpetas en C pero no encontré nada. Si alguien conoce de página me sería de gran ayuda.
Si es para Windows: http://msdn.microsoft.com/en-us/library/windows/desktop/aa363950(v=vs.85).aspx

leosansan

Cita de: Shevy en 14 Enero 2014, 19:55 PM
Hola muy buenas. He estado buscando por la web algún tutorial de manejo de carpetas en C pero no encontré nada. Si alguien conoce de página me sería de gran ayuda.

Una simple opción es usar el system con dir y sus acólitos.

Por ejemplo si quieres ver el contenido de la carpeta C bastaría:


Código (cpp) [Seleccionar]

system  ("dir c:\\");

vangodp

+1 system.  :-X vaya que no le guste  :silbar:

amchacon

Doy por hecho que usas C++.

Función que lista directorios en Windows:
Código (cpp) [Seleccionar]
void listarDirectorio(std::string Cosa)
{
   // Variables del sistema

   WIN32_FIND_DATA findFileData;
   HANDLE          hFind;

  // Variable auxiliar

   std::string Buffer;

   // Iniciamos la busqueda y le pasamos un valor a nuestro Handle

   hFind = FindFirstFile(Cosa.c_str(), &findFileData);

   // Si no existe la carpeta

   if (hFind == INVALID_HANDLE_VALUE)
   {
       std::cout << "La carpeta no existe o no se puede acceder";
   }

   else
   {
       // Si existe, pasamos al siguiente fichero (el primero solo contiene basura)

       FindNextFile(hFind, &findFileData);

       // Listamos todos los ficheros restantes

       while (FindNextFile(hFind, &findFileData) != 0)
       {
           Buffer = Cosa; // Creamos una variable de nombre con el valor del directorio
           Buffer.erase(Buffer.size()-1); // Borramos el asterisco
           Buffer += findFileData.cFileName;

           if (GetFileAttributes(Buffer.c_str()) == FILE_ATTRIBUTE_DIRECTORY)
           {
               Buffer += "\\*";
               listarDirectorio(Buffer);
           }
           else
           {
               std::cout<<Buffer<<endl;
           }
       }
   }
}


Es importante que le pases a la función la ruta "*" para que te marque la carpeta actual.
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar