FileMove

Bir dosyayı yerel veya paylaşılan bir klasörden, başka bir klasöre taşır.

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

Parametreler

src_file_name

[in]  Taşınacak/yeniden isimlendirilecek 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 bir yerel klasöre yerleştirilmiş (common_flag=0).

dst_file_name

[in]  İşlem sonundaki dosya 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 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);
//--- dosya adreslerini al
   string src_path;
   string dst_path;
   StringConcatenate(src_path,InpSrcDirectory,"//",InpSrcName);
   StringConcatenate(dst_path,InpDstDirectory,"//",InpDstName);
//--- kaynak dosyası mevcut mu kontrol et (mevcut değilse - çık)
   if(FileIsExist(src_path))
      PrintFormat("%s dosyası %s\\Files\\%s konumunda mevcut",InpSrcName,local,InpSrcDirectory);
   else
     {
      PrintFormat("Hata, %s kaynak dosyası bulunamadı",InpSrcName);
      return;
     }
//--- Sonuç dosyası zaten mevcut mu kontrol et
   if(FileIsExist(dst_path,FILE_COMMON))
     {
      PrintFormat("%s dosyası %s\\Files\\%s klasöründe mevcut",InpDstName,common,InpDstDirectory);
      //--- dosya mevcut, taşıma işlemi FILE_REWRITE bayrağı ile gerçekleştirilmeli
      ResetLastError();
      if(FileMove(src_path,0,dst_path,FILE_COMMON|FILE_REWRITE))
         PrintFormat("%s dosyası taşındı",InpSrcName);
      else
         PrintFormat("Hata! Kod = %d",GetLastError());
     }
   else
     {
      PrintFormat("%s dosyası, %s\\Files\\%s klasöründe mevcut değil",InpDstName,common,InpDstDirectory);
      //--- dosya mevcut değil, taşıma işlemi FILE_REWRITE bayrağı olmadan gerçekleştirilmeli
      ResetLastError();
      if(FileMove(src_path,0,dst_path,FILE_COMMON))
         PrintFormat("%s dosyası taşındı",InpSrcName);
      else
         PrintFormat("Hata! Kod = %d",GetLastError());
     }
//--- dosya taşındı, şimdi kontrol edelim
   if(FileIsExist(dst_path,FILE_COMMON) && !FileIsExist(src_path,0))
      Print("Başarılı!");
   else
      Print("Hata!
  }

Ayrıca Bakınız

FileIsExist