jueves, 4 de junio de 2015

33 - Tutorial de C++ en español - Delete (Eliminar archivos y carpetas)




En este capítulo del Tutorial de C++ crearemos una función llamada eliminar(string ruta) la cual nos permitirá eliminar tanto archivos como carpetas, reutilizaremos las funciones is_dir y is_file creadas en el capítulo 29, para comprobar si la ruta dada se trata de un archivo o una carpeta, si se trata de un archivo utilizaremos el comando del sistema DEL y si se trata de una carpeta el comando RMDIR.

eliminar.cpp

#include <iostream>
#include <dirent.h> //DIR
#include <string>

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 eliminar(string ruta)
{
 string comando; //rmdir o del
 if (is_dir(ruta))
 {
  comando = "rmdir " + ruta + " /s /q";
  system(comando.c_str());                
 }
 else if (is_file(ruta))
 {
  comando = "del " + ruta;
  system(comando.c_str());    
 }
 else
 {
  cout << "El elemento no existe" << endl;   
 }
}

void init()
{
  cout << "Indica la ruta de la carpeta o archivo a eliminar: ";
  string ruta;
  getline(cin, ruta);
  eliminar(ruta);
  init();   
}

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