FolderClean

Belirtilen klasördeki tüm dosyaları siler.

bool  FolderClean(
   string  folder_name,       // Silinecek dosyanın ismi
   int     common_flag=0      // Kapsam
   );

Parametreler

folder_name

[in] İçindeki tüm dosyaların silinmesi istenen klasörün ismi. Klasörün tam adresini içerir.

common_flag=0

[in]  Dizin konumunu belirleyen bayrak. common_flag = FILE_COMMON ise, tüm müşteri terminallerinin ortak klasöründe bulunur \Terminal\Common\Files. Aksi durumda dizin, yerel bir klasördedir (sınama durumunda MQL5\Files veya MQL5\Tester\Files).

Dönüş değeri

Başarılı ise 'true' değerine, aksi durumda '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.

Tüm dosya ve alt klasörler geri dönülemez biçimde silineceğinden, fonksiyon dikkatle kullanılmalıdır.

Örnek:

//+------------------------------------------------------------------+
//|                                             Demo_FolderClean.mq5 |
//|                         Copyright 2000-2024, MetaQuotes Ltd. |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2000-2024, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//--- Açıklama
#property description "Bu script, FolderClean() fonksiyonunun kullanım örneğini gösterir."
#property description "Önce, belirtilen klasörde FileOpen() fonksiyonu ile dosyalar oluşturulur."
#property description "Ardından dosyalar silinmeden önce MessageBox() fonksiyonu ile bir uyarı gösterilir."
 
//--- giriş parametrelerinin iletişim penceresini, script çalıştırıldığında göster 
#property script_show_inputs
//--- Giriş parametreleri
input string   foldername="demo_folder";  // MQL5/Files/ dizininde bir klasör oluştur
input int      files=5;                   // Oluşturulacak ve silinecek dosyaların sayısı
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   string name="testfile";
//--- Dosyaları, önce terminal veri klasöründe aç veya oluştur
   for(int N=0;N<files;N++)
     {
      //--- 'demo_folder\testfileN.txt' biçimde dosya ismi
      string filemane=StringFormat("%s\\%s%d.txt",foldername,name,N);
      //--- Yazma bayrağı ile bir dosya aç, bu durumda otomatik olarak 'demo_folder' klasörü oluşturulacak
      int handle=FileOpen(filemane,FILE_WRITE);
      //--- FileOpen() fonksiyonu başarılı oldu mu öğren
      if(handle==INVALID_HANDLE)
        {
         PrintFormat("%s dosyasının oluşturulması başarısız. Hata kodu",filemane,GetLastError());
         ResetLastError();
        }
      else
        {
         PrintFormat("%s dosyası, başarılı biçimde açıldı",filemane);
         //--- Açılan dosyaya artık ihtiyaç yok; dosyayı kapat
         FileClose(handle);
        }
     }
 
//--- Klasördeki dosyaların sayısını kontrol et 
   int k=FilesInFolder(foldername+"\\*.*",0);
   PrintFormat("%s klasörü toplamda %d adet dosya içeriyor",foldername,k);
 
//--- Kullanıcıya sormak için bir iletişim penceresi aç
   int choice=MessageBox(StringFormat("%s klasöründen %d adet dosya sileceksiniz. Devam etmek istiyor musunuz?",k,foldername),
                         "Dosyalar klasörden siliniyor",
                         MB_YESNO|MB_ICONQUESTION); //  İki düğme - "Yes" ve "No"
   ResetLastError();
 
//--- Seçilen versiyona göre bir eylem gerçekleştir
   if(choice==IDYES)
     {
      //--- Dosyaları silmeye başla
      PrintFormat("%s klasöründeki tüm dosyaların silinmesi için uğraşılıyor",foldername);
      if(FolderClean(foldername,0))
         PrintFormat("Dosyalar başarıyla silindi, %d adet dosya, %s klasöründe kaldı",
                     foldername,
                     FilesInFolder(foldername+"\\*.*",0));
      else
         PrintFormat("%s klasöründen dosyalar silinemedi. Hata kodu %d",foldername,GetLastError());
     }
   else
      PrintFormat("Silme işlemi iptal edildi");
//---
  }
//+------------------------------------------------------------------+
//| Belirtilen klasördeki dosya sayısına dönüş yapar                 |
//+------------------------------------------------------------------+
int FilesInFolder(string path,int flag)
  {
   int count=0;
   long handle;
   string filename;
//---
   handle=FileFindFirst(path,filename,flag);
//--- Bir dosya bile bulunmuşsa, daha fazlası için aramaya devam et
   if(handle!=INVALID_HANDLE)
     {
      //--- Dosya ismini göster
      PrintFormat("%s dosyası bulundu",filename);
      //--- Bulunan dosyaların/klasörlerin sayacını artır
      count++;
      //--- dosyaları/klasörleri aramaya başla
      while(FileFindNext(handle,filename))
        {
         PrintFormat("%s dosyası bulundu",filename);
         count++;
        }
      //--- Tamamlanmasının ardından arama işleyicisini kapamayı unutma
      FileFindClose(handle);
     }
   else // İşleyici alınamadı
     {
      PrintFormat("%s klasöründeki dosya araması başarısız oldu",path);
     }
//--- sonuca dönüş yap
   return count;
  }

Ayrıca Bakınız

FileFindFirst, FileFindNext, FileFindClose