viernes, 5 de junio de 2015

34 - Tutorial de C++ en español - list_dir (Listar directorios)




En este capítulo del tutorial de C++ crearemos una función llamada list_dir(string dir) que nos pemitirá listar los elementos (archivos y carpetas) de un determinado directorio, para ello trabajaremos con la librería dirent.h para manejar directorios y su estructura de datos llamada dirent que nos permitirá ir accediendo uno a uno a los elementos del directorio, usaremos el miembro d_name de la estructura de datos dirent para extraer el nombre de cada elemento.

list-dir.cpp

#include <iostream>
#include <dirent.h>

using namespace std;

void list_dir(string dir)
{
  DIR * directorio;
  struct dirent * elemento;
  string elem;
  if (directorio = opendir(dir.c_str()))
  { 
   while (elemento = readdir(directorio))
   {
    elem = elemento->d_name;
    if (elem != "." && elem != "..") cout << elem << endl;   
   }            
  }
  closedir(directorio);
}

void init()
{
  cout << "Ruta del directorio a listar: ";
  string dir;
  getline(cin, dir);
  list_dir(dir);   
  init();
}

int main(int argc, char *argv[])
{
 init();
 system("PAUSE");
 return 0;
}