Descargar MetaTrader 5

FileIsExist

Esta función comprueba la existencia de un archivo.

bool  FileIsExist(
   const string  file_name,       // nombre del archivo
   int           common_flag=0    // zona de búsqueda
   );

Parámetros

file_name

[in]  Nombre del archivo a comprobar.

common_flag=0

[in] Bandera que determina la ubicación del archivo. Si common_flag=FILE_COMMON, entonces el archivo se encuentra en una carpeta compartida de todos los terminales de cliente \Terminal\Common\Files. De lo contrario, el archivo está ubicado en una carpeta local.

Valor devuelto

Devuelve true, si el archivo especificado existe.

Nota

El archivo comprobado puede resultar una subcarpeta. En este caso la función FileIsExist() devuelve false y en la variable _LastError se inscribe el error 5018 - "No es un archivo, sino una subcarpeta" (ver el ejemplo para la función FileFindFirst).

Por razones de seguridad el trabajo con los archivos en el lenguaje MQL5 se encuentra bajo un estricto control. Los archivos con los que se realizan las operaciones de archivos utilizando los medios del lenguaje MQL5 no pueden estar fuera del entorno protegido de archivos (file sandbox).

Si common_flag=FILE_COMMON, la función busca el archivo especificado en una carpeta compartida de todos los terminales de cliente \Terminal\Common\Files, de lo contrario la función lo busca en una carpeta local (MQL5\Files o MQL5\Tester\Files en caso de prueba).

Ejemplo:

//--- mostramos la ventana de parámetros de entrada al iniciar el script
#property script_show_inputs
//--- fecha para archivos antiguos
input datetime InpFilesDate=D'2013.01.01 00:00';
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   string   file_name;      // variable para almacenar los nombres de archivos
   string   filter="*.txt"// filtro para la búsqueda de archivos
   datetime create_date;    // fecha de creación del archivo
   string   files[];        // lista con los nombres de los archivos
   int      def_size=25;    // tamaño del array por defecto
   int      size=0;         // número de archivos
//--- adjudicar memoria para array
   ArrayResize(files,def_size);
//--- recibir el manejador de búsqueda en la raíz de la carpeta local
   long search_handle=FileFindFirst(filter,file_name);
//--- comprobamos si la función FileFindFirst() se ha ejecutado con exito
   if(search_handle!=INVALID_HANDLE)
     {
      //--- repasamos los archivos en el ciclo
      do
        {
         files[size]=file_name;
         //--- aumentamos el tamaño del array
         size++;
         if(size==def_size)
           {
            def_size+=25;
            ArrayResize(files,def_size);
           }
         //--- reseteamos el valor del error
         ResetLastError();
         //--- obtenemos la fecha de creación del archivo
         create_date=(datetime)FileGetInteger(file_name,FILE_CREATE_DATE,false);
         //--- comprobamos si el archivo es antiguo
         if(create_date<InpFilesDate)
           {
            PrintFormat("¡El archivo %s ha sido eliminado!",file_name);
            //--- eliminamos el archivo antiguo
            FileDelete(file_name);
           }
        }
      while(FileFindNext(search_handle,file_name));
      //--- cerramos el manejador de búsqueda
      FileFindClose(search_handle);
     }
   else
     {
      Print("Files not found!");
      return;
     }
//--- comprobamos qué archivos se han quedado
   PrintFormat("Resultados:");
   for(int i=0;i<size;i++)
     {
      if(FileIsExist(files[i]))
         PrintFormat("¡El archivo %s existe!",files[i]);
      else
         PrintFormat("¡El archivo %s ha sido eliminado!",files[i]);
     }
  }

Véase también

FileFindFirst


Actualizado: 2015.12.03