davidcastrosalinas

Tips para resolver algunos problemas con ficheros

Oct 9th, 2020
217
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.91 KB | None | 0 0
  1. /**
  2.  * @file main.cpp
  3.  * @brief Ejemplo de básico de lectura de directorios y control de errores
  4.  * @author David Castro Salinas
  5.  * @date 10/2020
  6.  */
  7. #include <iostream> //flujos
  8. #include "Dirent.h" //leer directorios
  9. #include <exception> // try catch
  10. #include <ctime> //obtener la fecha actual time
  11. #include <cstring> //c_str  strcmp
  12. #include <stdlib.h>     // atoi  itoa
  13.  
  14.  
  15. using namespace std;
  16.  
  17.  
  18. /**
  19.  * @fn listarArchivos
  20.  * @brief Ejemplo básico de lectura de un directorio de forma recursiva
  21.  * @param directorio puede ser un directorio o una unidad ejemplo C:\\MIS ARCHIVOS\\
  22.  * @return void
  23.  */
  24. void listarArchivos(string directorio){
  25.     //abro el directorio
  26.     DIR *dir = opendir(directorio.c_str());
  27.     //Si efectivamente es un directorio ingreso
  28.     if (dir != NULL) {
  29.       dirent *ent;
  30.       //recorro los contenidos en el directorio
  31.       while ((ent = readdir(dir)) != NULL ){
  32.         //omito los . y .. de los directorios
  33.         //http://www.cplusplus.com/reference/cstring/strcmp/?kw=strcmp
  34.         if(strcmp(ent->d_name,"..") == 0  || strcmp(ent->d_name, ".")==0)
  35.             continue;
  36.  
  37.         //muestro el archivo o directorio
  38.         cout << ent->d_name<<"\n";
  39.         //recursivamente ingreso a un nuevo directorio
  40.         listarArchivos(directorio+"\\"+ent->d_name);
  41.       }
  42.       closedir (dir);
  43.     }
  44. }
  45.  
  46.  
  47. /**
  48.  * @fn controlErrores
  49.  * @brief //ejemplo básico de control de errores
  50.  * @param void
  51.  * @return void
  52.  */
  53. void controlErrores(){
  54.     int numero = 0;
  55.     try {
  56.         string numeroString = "123";
  57.         numero = atoi(numeroString.c_str());
  58.     } catch (exception& e) {
  59.         numero = -1;
  60.         cout <<"\nMensaje de error: ["<< e.what() << "]\n";
  61.     }
  62.     cout << "numero: "<<numero;
  63.  
  64.  
  65.     //ahora un caso con error forzado
  66.     int numero2 = 0;
  67.     //http://www.cplusplus.com/doc/tutorial/exceptions/
  68.     try {
  69.         string numeroString2 = NULL;
  70.         //www.cplusplus.com/reference/cstdlib/atoi/
  71.         numero2 = atoi(numeroString2.c_str());
  72.  
  73.     } catch (exception& e) {
  74.         numero2 = -1;
  75.         cout <<"\nMensaje de error: ["<< e.what() << "]\n";
  76.     }
  77.     cout << "numero2: "<<numero2;
  78.  
  79. }
  80.  
  81.  
  82. /**
  83.  * @fn fechaDeHoy
  84.  * @brief entrega la fecha de hoy (intensionalmente se dejó incompleta para que el estudiante la termine)
  85.  * @param void
  86.  * @return string que contiene la fecha de hoy
  87.  */
  88. string fechaDeHoy(){
  89.     //http://www.cplusplus.com/reference/ctime/time/?kw=time
  90.     time_t t=time(NULL);
  91.     //http://www.cplusplus.com/reference/ctime/localtime/
  92.     tm* timePtr = localtime(&t);
  93.     int anho=timePtr->tm_year+1900;
  94.     int mes=timePtr->tm_mon+1;
  95.     int dia=timePtr->tm_mday;
  96.     //http://www.cplusplus.com/reference/string/to_string/
  97.     return to_string(dia) + "/" + to_string(mes) + "/" + to_string(anho);
  98. }
  99.  
  100. int main()
  101. {
  102.     cout <<fechaDeHoy();
  103.     controlErrores();
  104.     listarArchivos("C:\\");
  105.     return 0;
  106. }
  107.  
Add Comment
Please, Sign In to add comment