lunes, 1 de junio de 2015

29 - Tutorial de C++ en español - is_dir y is_file (Comprobar si un archivo o carpeta existe)




En este capítulo del tutorial de C++ crearemos un programa que nos permitirá saber si un determinado archivo o carpeta existe, para manejar directorios utilizaremos la librería dirent.h. Crearemos dos funciones is_dir() y is_file() ambas Boolean para realizar la comprobación.

isdir-isfile.cpp

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

using namespace std;

bool is_dir(string dir)
{
  DIR * directorio;
  if (directorio = opendir(dir.c_str()))
  {
    closedir(directorio);
    return true;             
  }   
  else
  {
   return false;   
  }
}

bool is_file(string file)
{
 FILE * archivo;
 if (archivo = fopen(file.c_str(), "r"))
 {
  fclose(archivo);
  return true;           
 }    
 else
 {
  return false;  
 }
}

void init()
{
  cout << "Buscar si el archivo o carpeta existe: ";
  string elemento;
  getline(cin, elemento);
  if (is_dir(elemento)) cout << "La carpeta existe" << endl;
  else if (is_file(elemento)) cout << "El archivo existe" << endl;
  else cout << "El elemento no existe" << endl; 
  init();  
}

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