FolderClean

La funzione cancella tutti i file in una cartella specificata.

bool  FolderClean(
   string  folder_name,       // La stringa con il nome della cartella eliminata
   int     common_flag=0      // Ambito
   );

Parametri

folder_name

[in] Il nome della directory in cui si desidera eliminare tutti i file. Contiene il percorso completo della cartella.

common_flag=0

[in]Flag determina la posizione della directory. Se common_flag = FILE_COMMON, la directory si trova nella cartella condivisa per tutti i terminali client \Terminal\Common\Files. In caso contrario, la directory si trova in una cartella locale (MQL5\files o MQL5\tester\files in caso di testing).

Valore restituito

Restituisce true se ha successo, altrimenti false.

Nota

Per motivi di sicurezza, il lavoro con i file è strettamente controllato nel linguaggio MQL5. I file con cui sono condotte le operazioni di file utilizzando i mezzi MQL5, non possono esservi al di fuori della sandbox del file.

Questa funzione deve essere usata con cautela, dal momento che tutti i file e tutte le sottodirectory vengono eliminate irrimediabilmente.

Esempio:

//+--------------------------------------------------------------------------------+
//|                                                           Demo_FolderClean.mq5 |
//|                                      Copyright 2011, MetaQuotes Software Corp. | 
//|                                                           https://www.mql5.com |
//+--------------------------------------------------------------------------------+
#property copyright "Copyright 2000-2024, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//--- Descrizione
#property description "Lo script mostra un esempio di uso di FolderClean()."
#property description "Prima, i file vengono creati nella cartella specificata usando la funzione FileOpen()."
#property description "Quindi, prima che i file vengano eliminati, un avviso viene mostrato usando il MessageBox()."
 
//--- Mostra la finestra di dialogo dei parametri di input quando inizia lo script
#property script_show_inputs
//--- parametri di Input
input string   foldername="demo_folder";  // Crea una cartella in MQL5/Files/
input int      files=5;                   // Il numero di file per creare ed eliminare
//+--------------------------------------------------------------------------------+
//| Funzione di avvio del programma Script                                         |
//+--------------------------------------------------------------------------------+
voidOnStart()
  {
   string name="testfile";
//--- Prima apre o crea i file nella cartella dati del terminale
   for(int N=0;N<files;N++)
     {
      //--- Il nome del file in forma di 'demo_folder\testfileN.txt'
      string filemane=StringFormat("%s\\%s%d.txt",foldername,name,N);
      //--- Apre il file con il flag per la scrittura, in questo caso, la cartella 'demo_folder' verrà creata automaticamente
      int handle=FileOpen(filemane,FILE_WRITE);
      //--- Rileva se la funzione FileOpen() ha avuto successo
      if(handle==INVALID_HANDLE)
        {
         PrintFormat("Fallimento nel creare il file %s. Error code",filemane,GetLastError());
         ResetLastError();
        }
      else
        {
         PrintFormat("Il file %s è stato aperto con successo",filemane);
         //--- Il file aperto non serve più, quindi viene chiuso
         FileClose(handle);
        }
     }
 
//--- Controlla il numero di file nella cartella 
   int k=FilesInFolder(foldername+"\\*.*",0);
   PrintFormat("La cartella %s contiene in totale %d file",foldername,k);
 
//--- Mostra una finestra per chiedere all'utente
   int choice=MessageBox(StringFormat("Stai per eliminare %d file dalla cartella %s. Sei sicuro di voler continuare?",foldername,k),
                         "Elimina i file dalla cartella",
                         MB_YESNO|MB_ICONQUESTION); //  Due bottoni - "Si" e "No" ("Yes" e "No")
   ResetLastError();
 
//--- Esegue l'azione a seconda della variante selezionata
   if(choice==IDYES)
     {
      //--- Inizia ad eliminare i file
      PrintFormat("Prova ad eliminare tutti i file dalla cartella %s",foldername);
      if(FolderClean(foldername,0))
         PrintFormat("I file sono stati eliminati con successo, %d file rimasti nella cartella %s",
                     foldername,
                     FilesInFolder(foldername+"\\*.*",0));
      else
         PrintFormat("Fallimento nell'eliminare i file dalla cartella %s. Codice errore %d",foldername,GetLastError());
     }
   else
      PrintFormat("Eliminazione annullata");
//---
  }
//+--------------------------------------------------------------------------------+
//| Restituisce il numero di file nella cartella specificata                       |
//+--------------------------------------------------------------------------------+
int FilesInFolder(string path,int flag)
  {
   int count=0;
   long handle;
   string filename;
//---
   handle=FileFindFirst(path,filename,flag);
//--- Se almeno un file viene trovato, cerca per più file
   if(handle!=INVALID_HANDLE)
     {
      //--- Mostra il nome del file
      PrintFormat("Il file %s è stato trovato",filename);
      //--- Incrementa il contatore dei file/cartelle trovati
      count++;
      //--- Inizia la ricerca in tutti i file/cartelle 
      while(FileFindNext(handle,filename))
        {
         PrintFormat("Il file %s è stato trovato",filename);
         count++;
        }
      //--- Non dimenticare di chiudere l'handle di ricerca una volta completata
      FileFindClose(handle);
     }
   else // Fallimento nell'ottenere l'handle
     {
      PrintFormat("Ricerca file nella cartella %s fallita",path);
     }
//--- Restituisce il risultato
   return count;
  }

Vedi anche

FileFindFirst, FileFindNext, FileFindClose