FileMove

Mueve un archivo de una carpeta local o compartida a otra carpeta.

bool  FileMove(
   const string  src_file_name,    // nombre del archivo para la operación de mover
   int           common_flag,      // zona de acción
   const string  dst_file_name,    // nombre del archivo de destino
   int           mode_flags        // modo de acceso
   );

Parámetros

src_file_name

[in]  Nombre del archivo a mover/renombrar.

common_flag

[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 (common_flag=0).

dst_file_name

[in]   Nombre del archivo resultante.

mode_flags

[in] Banderas de acceso. El parámetro puede contener sólo 2 banderas: FILE_REWRITE y/o FILE_COMMON - las demás banderas se ignoran. Si el archivo ya existe y la bandera FILE_REWRITE no ha sido especificada, el archivo no se regrabará, y la función devolverá false.

Valor devuelto

En caso de fallo la función devuelve false.

Nota

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 el archivo nuevo ya existía, el copiado va a realizarse dependiendo de la presencia de la bandera FILE_REWRITE en el parámetro mode_flags.

Ejemplo:

//--- mostramos la ventana de parámetros de entrada al iniciar el script
#property script_show_inputs
//--- parámetros de entrada
input string InpSrcName="data.txt";
input string InpDstName="newdata.txt";
input string InpSrcDirectory="SomeFolder";
input string InpDstDirectory="OtherFolder";
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   string local=TerminalInfoString(TERMINAL_DATA_PATH);
   string common=TerminalInfoString(TERMINAL_COMMONDATA_PATH);
//--- obtenemos las rutas de archivos
   string src_path;
   string dst_path;
   StringConcatenate(src_path,InpSrcDirectory,"//",InpSrcName);
   StringConcatenate(dst_path,InpDstDirectory,"//",InpDstName);
//--- comprobamos si existe el archivo de la fuente (si no, a salir)
   if(FileIsExist(src_path))
      PrintFormat("%s file exists in the %s\\Files\\%s folder",InpSrcName,local,InpSrcDirectory);
   else
     {
      PrintFormat("Error, %s source file not found",InpSrcName);
      return;
     }
//--- comprobamos si existe el archivo del resultado
   if(FileIsExist(dst_path,FILE_COMMON))
     {
      PrintFormat("%s file exists in the %s\\Files\\%s folder",InpDstName,common,InpDstDirectory);
      //--- el archivo existe, hay que realizar el traslado con la bandera FILE_REWRITE
      ResetLastError();
      if(FileMove(src_path,0,dst_path,FILE_COMMON|FILE_REWRITE))
         PrintFormat("%s file moved",InpSrcName);
      else
         PrintFormat("Error! Code = %d",GetLastError());
     }
   else
     {
      PrintFormat("%s file does not exist in the %s\\Files\\%s folder",InpDstName,common,InpDstDirectory);
      //--- el archivo no existe, el traslado se realiza sin la bandera FILE_REWRITE
      ResetLastError();
      if(FileMove(src_path,0,dst_path,FILE_COMMON))
         PrintFormat("%s file moved",InpSrcName);
      else
         PrintFormat("Error! Code = %d",GetLastError());
     }
//--- ahora el archivo ya ha sido movido, vamos a comprobarlo
   if(FileIsExist(dst_path,FILE_COMMON) && !FileIsExist(src_path,0))
      Print("Success!");
   else
      Print("Error!");
  }

Véase también

FileIsExist