FolderClean

Supprime tous les fichiers dans le dossier indiqué.

bool  FolderClean(
   string  folder_name,       // chaîne avec le nom du dossier
   int     common_flag=0      // domaine d'action
   );

Paramètres

folder_name

[in]   Le nom du répertoire,où il faut supprimer tous les fichiers. Contient le chemin complet vers le dossier.

common_flag=0

[in] Le drapeau, définissant la situation du répertoire. Si common_flag=FILE_COMMON, le répertoire se trouve dans le dossier commun de tous les terminaux de client \Terminal\Common\Files. Dans le cas contraire le répertoire se trouve dans le dossier local (MQL5\files ou MQL5\tester\files en cas du test).

La valeur rendue

Rend true en cas du succès, autrement rend false.

Note

Se servez prudemment de cette fonction, puisque tous les fichiers et tous les sous-répertoires inclus se suppriment irrévocablement.

Exemple:

//+------------------------------------------------------------------+
//|                                             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"
//--- la description
#property description "Le script montre un exemple de l'utilisation FolderClean()."
#property description "D'abord on crée les fichiers dans le dossier indiqué à l'aide de la fonction FileOpen()."
#property description "Puis, avant la suppression des fichiers on déduit l'avertissement MessageBox()."
 
//--- Nous montrons la fenêtre des paramètres d'entrée au lancement du script
#property script_show_inputs
//--- les paramètres d'entrée 
input string   foldername="demo_folder";  // créons le dossier dans MQL5/Files/
input int      files=5;                   // Combien de fichiers nous créons et nous supprimons
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   string name="testfile";
//--- d'abord nous ouvrirons ou nous créons les fichiers dans le dossier des données de notre terminal
   for(int N=0;N<files;N++)
     {
      //--- collectons le nom du fichier comme 'demo_folder\testfileN.txt'
      string filemane=StringFormat("%s\\%s%d.txt",foldername,name,N);
      //--- ouvrons le fichier avec le drapeau sur l'enregistrement, dans ce cas le dossier ' demo_folder ' sera automatiquement créé
      int handle=FileOpen(filemane,FILE_WRITE);
      //--- connaissons, autant la fonction a été accompli avec succès FileOpen()
      if(handle==INVALID_HANDLE)
        {
         PrintFormat("On n'a pas réussi à créer le fichier %s. Le code de l'erreur ",filemane,GetLastError());
         ResetLastError();
        }
      else
        {
         PrintFormat("Le fichier %s est ouvert avec succès",filemane);
         //--- nous n'avons plus besoin du fichier ouvert, il faut le fermer obligatoirement
         FileClose(handle);
        }
     }
 
//---vérifions combien de fichiers sont dans le dossier 
   int k=FilesInFolder(foldername+"\\*.*",0);
   PrintFormat("Au total%s on a trouvé %d fichiers",foldername,k);
 
//--- déduisons la boîte de dialogue et demanderons à l'utilisateur
   int choice=MessageBox(StringFormat("Vous allez supprimer %s %d fichiers du dossier, continuer?",foldername,k),
                         "La suppression des fichiers du dossier",
                         MB_YESNO|MB_ICONQUESTION); //  il y aura deux boutons - "Yes" et "No"
   ResetLastError();
 
//--- accomplirons les actions en fonction de la variante choisie
   if(choice==IDYES)
     {
      //--- commençons à supprimer
      PrintFormat("La tentative de supprimer tous les fichiers du dossier %s",foldername);
      if(FolderClean(foldername,0))
         PrintFormat("Les fichiers sont supprimés avec succès, %s fichiers %d sont réstés dans le dossier",
                     foldername,
                     FilesInFolder(foldername+"\\*.*",0));
      else
         PrintFormat("On n'a pas réussi à supprimer les fichiers du dossier %s. Le code de l'erreur %d",foldername,GetLastError());
     }
   else
      PrintFormat("La suppression est annulée");
//---
  }
//+------------------------------------------------------------------+
//| rend le nombre de fichiers dans le dossier                   |
//+------------------------------------------------------------------+
int FilesInFolder(string path,int flag)
  {
   int count=0;
   long handle;
   string filename;
//---
   handle=FileFindFirst(path,filename,flag);
//--- Si quand même un fichier est trouvé, nous cherchons les autres
   if(handle!=INVALID_HANDLE)
     {
      //--- déduisons le nom du fichier
      PrintFormat("le fichier %s est trouvé",filename);
      //--- accroissons le compteur des fichiers/dossiers trouvés
      count++;
      //--- commençons le balayage de tous les fichiers/dossiers 
      while(FileFindNext(handle,filename))
        {
         PrintFormat("le fichier %s a été trouvé",filename);
         count++;
        }
      //--- fermons obligatoirement le handle de la recherche à la fin
      FileFindClose(handle);
     }
   else // on n'a pas réussi à recevoir le handle
     {
      PrintFormat("On n'a pas réussi à faire la recherche des fichiers dans le dossier %s",path);
     }
//--- rendons le résultat 
   return count;
  }

Voir aussi

FileFindFirst, FileFindNext, FileFindClose