FileCopy

A função copia o arquivo original a partir de uma pasta local ou compartilhada para outro arquivo.

bool  FileCopy(
   const string  src_file_name,     // Nome de um arquivo fonte 
   int           common_flag,       // Localização
   const string  dst_file_name,     // Nome do arquivo de destino
   int           mode_flags         // Modo de acesso
   );

Parâmetros

src_file_name

[in]  O nome do arquivo para cópia.

common_flag

[in] Bandeira determinando a localização do arquivo. Se common_flag = FILE_COMMON, então o arquivo está localizado em uma pasta compartilhada para todos os terminais de cliente \Terminal\Common\Files. Caso contrário, o arquivo está localizado em uma pasta local (por exemplo, common_flag=0).

dst_file_name

[in]  Resultado nome do arquivo.

mode_flags

[in] Bandeiras de acesso. O parâmetro pode conter apenas duas bandeiras: FILE_REWRITE e/ou FILE_COMMON - outras bandeiras são ignoradas. Se o arquivo já existe, e a bandeira FILE_REWRITE não foi especificado, então o arquivo não será reescrito e a função retornará false.

Valor do Retorno

Em caso de falha a função retornará false.

Observação

Por razões de segurança, o trabalho com arquivos é estritamente controlada na língua MQL5. Arquivos com que as operações de arquivo são conduzidas usando os meios MQL5, não podem estar fora da caixa de proteção do arquivo.

Se o novo arquivo já existe, a cópia será feita dependendo da disponibilidade da bandeira FILE_REWRITE dentro do parâmetro mode_flags.

Exemplo:

//--- mosta a janela dos parâmetros de entrada quando lançado o script
#property script_show_inputs
//--- parâmetros de entrada
input string InpSrc="source.txt";       // source
input string InpDst="destination.txt";  // copy
input int    InpEncodingType=FILE_ANSI// ANSI=32 ou UNICODE=64
//+------------------------------------------------------------------+
//| Programa Script da função start (iniciar)                        |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- exibir o conteúdo de origem (que deve existir)
   if(!FileDisplay(InpSrc))
      return;
//--- verifique se a cópia do arquivo já existe (não pode ser criado)
   if(!FileDisplay(InpDst))
     {
      //--- a cópia de arquivo não existe, copiando sem a bandeira FILE_REWRITE (cópia correta)
      if(FileCopy(InpSrc,0,InpDst,0))
         Print("Arquivo está copiado!");
      else
         Print("Arquivo não está copiado!");
     }
   else
     {
      //--- cópia do arquivo já existe, tente copiar sem a bandeira FILE_REWRITE (cópia incorreta)
      if(FileCopy(InpSrc,0,InpDst,0))
         Print("Arquivo está copiado!");
      else
         Print("Arquivo não está copiado!");
      //--- conteúdo do arquivo InpDst continua o mesmo
      FileDisplay(InpDst);
      //--- copiar mais uma vez com a bandeira FILE_REWRITE (copiando correto, se o arquivo existe)
      if(FileCopy(InpSrc,0,InpDst,FILE_REWRITE))
         Print("Arquivo está copiado!");
      else
         Print("Arquivo não está copiado!");
     }
//--- receber cópia de arquivo InpS
   FileDisplay(InpDst);
  }
//+------------------------------------------------------------------+
//| Ler comentários do arquivo                                       |
//+------------------------------------------------------------------+
bool FileDisplay(const string file_name)
  {
//--- redefine o valor de erro
   ResetLastError();
//--- abre o arquivo
   int file_handle=FileOpen(file_name,FILE_READ|FILE_TXT|InpEncodingType);
   if(file_handle!=INVALID_HANDLE)
     {
      //--- exibir o conteúdo do arquivo no loop
      Print("+---------------------+");
      PrintFormat("Nome do arquivo = %s",file_name);
      while(!FileIsEnding(file_handle))
         Print(FileReadString(file_handle));
      Print("+---------------------+");
      //--- fechar o arquivo
      FileClose(file_handle);
      return(true);
     }
//--- falha para abrir o arquivo
   PrintFormat("%s não está aberto, erro = %d",file_name,GetLastError());
   return(false);
  }