FileCopy

Yerel veya paylaşılan bir klasördeki orjinal dosyayı başka bir dosyaya kopyalar.

bool  FileCopy(
   const string  src_file_name,     // Kaynak dosyasının ismi
   int           common_flag,       // Konum
   const string  dst_file_name,     // Hedef dosyanın ismi
   int           mode_flags         // Erişim modu
   );

Parametreler

src_file_name

[in]  Kopyalanacak dosyanın ismi.

common_flag

[in]  Dosyanın konumunu belirleyen bayrak. common_flag = FILE_COMMON ise dosya, tüm kullanıcılar için paylaşılan bir klasöre \Terminal\Common\Files, aksi durumda ise yerel bir klasöre yerleştirilmiştir (örneğin, common_flag=0).

dst_file_name

[in]  Sonuç dosyasının ismi.

mode_flags

[in] Erişim bayrakları. Bu parametre sadece iki bayrak içerebilir: FILE_REWRITE ve/veya FILE_COMMON - diğer bayraklar gözardı edilir. Eğer dosya zaten mevcutsa ve FILE_REWRITE bayrağı belirtilmemişse, dosya yeniden yazılmaz ve false dönüşü yapar.

Dönüş değeri

Başarısız sonuç durumunda false değerine dönüş yapar.

Not

Dosya işlemleri, MQL5 dili içerisinde güvenlik amacıyla sıkı şekilde kontrol edilmektedir. İşlemleri, MQL5 araçları ile yürütülen dosyalar, dosya güvenlik-ortamı (sandbox) dışında yer alamaz.

Dosya zaten mevcutsa, kopyalama işlemi FILE_REWRITE bayrağının mode_flags parametresindeki varlığına bağlı olacaktır.

Örnek:

//--- script çalıştırıldığında giriş parametrelerinin penceresini göster
#property script_show_inputs
//--- giriş parametreleri
input string InpSrc="source.txt";       // kaynak
input string InpDst="destination.txt";  // kopya
input int    InpEncodingType=FILE_ANSI// ANSI=32 veya UNICODE=64
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- kaynak içeriğini görüntüle (mevcut olmalı)
   if(!FileDisplay(InpSrc))
      return;
//--- hedef dosyası zaten mevcut mu kontrol et (oluşturulamayabilir)
   if(!FileDisplay(InpDst))
     {
      //--- hedef dosya mevcut değil, FILE_REWRITE bayrağı olmadan kopyala (doğru kopyalama)
      if(FileCopy(InpSrc,0,InpDst,0))
         Print("Dosya kopyalandı!");
      else
         Print("Dosya kopyalanamadı!");
     }
   else
     {
      //--- Hdef dosya zaten mevcut, FILE_REWRITE bayrağı olmadan kopyalamayı dene (hatalı kopyalama)
      if(FileCopy(InpSrc,0,InpDst,0))
         Print("Dosya kopyalandı!");
      else
         Print("Dosya kopyalanamadı!");
      //--- InpDst dosyasının içeriği aynı kaldı
      FileDisplay(InpDst);
      //--- bir kez daha kopyala, bu sefer FILE_REWRITE bayrağını kullan (dosya mevcutsa doğru kopyalama)
      if(FileCopy(InpSrc,0,InpDst,FILE_REWRITE))
         Print("Dosya kopyalandı!");
      else
         Print("Dosya kopyalanamadı!");
     }
//--- InpSrc dosya kopyasını al
   FileDisplay(InpDst);
  }
//+------------------------------------------------------------------+
//| Dosya içeriklerini oku                                           |
//+------------------------------------------------------------------+
bool FileDisplay(const string file_name)
  {
//--- hata değerini sıfırla
   ResetLastError();
//--- dosyayı aç
   int file_handle=FileOpen(file_name,FILE_READ|FILE_TXT|InpEncodingType);
   if(file_handle!=INVALID_HANDLE)
     {
      //--- dosya içeriğini döngü içinde görüntüle
      Print("+---------------------+");
      PrintFormat("Dosya ismi = %s",file_name);
      while(!FileIsEnding(file_handle))
         Print(FileReadString(file_handle));
      Print("+---------------------+");
      //--- dosyayı kapat
      FileClose(file_handle);
      return(true);
     }
//--- dosya açılamadı
   PrintFormat("%s açılamadı, hata = %d",file_name,GetLastError());
   return(false);
  }