Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * @file main.cpp
- * @brief Ejemplo de básico de lectura de directorios y control de errores
- * @author David Castro Salinas
- * @date 10/2020
- */
- #include <iostream> //flujos
- #include "Dirent.h" //leer directorios
- #include <exception> // try catch
- #include <ctime> //obtener la fecha actual time
- #include <cstring> //c_str strcmp
- #include <stdlib.h> // atoi itoa
- using namespace std;
- /**
- * @fn listarArchivos
- * @brief Ejemplo básico de lectura de un directorio de forma recursiva
- * @param directorio puede ser un directorio o una unidad ejemplo C:\\MIS ARCHIVOS\\
- * @return void
- */
- void listarArchivos(string directorio){
- //abro el directorio
- DIR *dir = opendir(directorio.c_str());
- //Si efectivamente es un directorio ingreso
- if (dir != NULL) {
- dirent *ent;
- //recorro los contenidos en el directorio
- while ((ent = readdir(dir)) != NULL ){
- //omito los . y .. de los directorios
- //http://www.cplusplus.com/reference/cstring/strcmp/?kw=strcmp
- if(strcmp(ent->d_name,"..") == 0 || strcmp(ent->d_name, ".")==0)
- continue;
- //muestro el archivo o directorio
- cout << ent->d_name<<"\n";
- //recursivamente ingreso a un nuevo directorio
- listarArchivos(directorio+"\\"+ent->d_name);
- }
- closedir (dir);
- }
- }
- /**
- * @fn controlErrores
- * @brief //ejemplo básico de control de errores
- * @param void
- * @return void
- */
- void controlErrores(){
- int numero = 0;
- try {
- string numeroString = "123";
- numero = atoi(numeroString.c_str());
- } catch (exception& e) {
- numero = -1;
- cout <<"\nMensaje de error: ["<< e.what() << "]\n";
- }
- cout << "numero: "<<numero;
- //ahora un caso con error forzado
- int numero2 = 0;
- //http://www.cplusplus.com/doc/tutorial/exceptions/
- try {
- string numeroString2 = NULL;
- //www.cplusplus.com/reference/cstdlib/atoi/
- numero2 = atoi(numeroString2.c_str());
- } catch (exception& e) {
- numero2 = -1;
- cout <<"\nMensaje de error: ["<< e.what() << "]\n";
- }
- cout << "numero2: "<<numero2;
- }
- /**
- * @fn fechaDeHoy
- * @brief entrega la fecha de hoy (intensionalmente se dejó incompleta para que el estudiante la termine)
- * @param void
- * @return string que contiene la fecha de hoy
- */
- string fechaDeHoy(){
- //http://www.cplusplus.com/reference/ctime/time/?kw=time
- time_t t=time(NULL);
- //http://www.cplusplus.com/reference/ctime/localtime/
- tm* timePtr = localtime(&t);
- int anho=timePtr->tm_year+1900;
- int mes=timePtr->tm_mon+1;
- int dia=timePtr->tm_mday;
- //http://www.cplusplus.com/reference/string/to_string/
- return to_string(dia) + "/" + to_string(mes) + "/" + to_string(anho);
- }
- int main()
- {
- cout <<fechaDeHoy();
- controlErrores();
- listarArchivos("C:\\");
- return 0;
- }
Add Comment
Please, Sign In to add comment