FolderClean

A função exclui todos os arquivos em uma pasta especificada.

bool  FolderClean(
   string  folder_name,       // String com o nome da pasta eliminada
   int     common_flag=0      // escopo
   );

Parâmetros

folder_name

[in] O nome do diretório onde você deseja excluir todos os arquivos. Contém o caminho completo para a pasta.

common_flag=0

[in] Bandeira determinando a localização do diretório. Se common_flag = FILE_COMMON, então o diretório está na pasta compartilhada para todos os terminais de clientes \Terminal\Common\Files. Caso contrário, o diretório está numa pasta local (MQL5\Files ou MQL5\Tester\Files no caso dos testes).

Valor do Retorno

Retorna true se bem sucedido, caso contrário false.

Observação

Por razões de segurança, o trabalho com arquivos é estritamente controlada na língua MQL5. Arquivos com que as operações de arquivo são conduzidas usando os meios MQL5, não podem estar fora da caixa de proteção do arquivo.

Esta função deve ser usada com cuidado, uma vez que todos os arquivos e todos os subdiretórios são excluídos irremediavelmente.

Exemplo:

//+------------------------------------------------------------------+
//|                                             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"
//--- Descrição
#property description "O script mostra um exemplo de uso FolderClean()."
#property description "Primeiro, os arquivos são criados na pasta especificada utilizando a função FileOpen ()."
#property description "Então, antes que os arquivos sejam apagados, um aviso é mostrado usando MessageBox()."
 
//--- Mostrar caixa de diálogo de parâmetros de entrada quando se inicia o script
#property script_show_inputs
//--- Parâmetros de entrada
input string   foldername="demo_folder";  // Criar uma pasta em MQL5/Files/
input int      files=5;                   // O número de arquivos para criar e excluir
//+------------------------------------------------------------------+
//| Programa Script da função start (iniciar)                        |
//+------------------------------------------------------------------+
void OnStart()
  {
   string name="testfile";
//---Primeiro abrir ou criar arquivos na pasta de dados do terminal
   for(int N=0;N<files;N++)
     {
      //--- O nome do arquivo no formato demo_pasta\testfileN.txt'
      string filemane=StringFormat("%s\\%s%d.txt",foldername,name,N);
      //--- Abrir um arquivo com a bandeira para a escrita, neste caso, o 'demo_pasta' será criado automaticamente
      int handle=FileOpen(filemane,FILE_WRITE);
      //--- Descubra se a função FileOpen() foi bem sucedida
      if(handle==INVALID_HANDLE)
        {
         PrintFormat("Falha para criar arquivo %s. Código de erro",filemane,GetLastError());
         ResetLastError();
        }
      else
        {
         PrintFormat("Arquivo %s foi aberto com sucesso",filemane);
         //--- O arquivo aberto não é mais necessário, então fechá-lo
         FileClose(handle);
        }
     }
 
//--- Verifique o número de arquivos na pasta
   int k=FilesInFolder(foldername+"\\*.*",0);
   PrintFormat("Totalmente a pasta %s contém %d arquivos",foldername,k);
 
//--- Mostrar uma janela para perguntar ao usuário
   int choice=MessageBox(StringFormat("Você vai apagar %d arquivos da pasta %s. Você quer continuar?",foldername,k),
                         "Excluindo arquivos da pasta",
                         MB_YESNO|MB_ICONQUESTION); // Dois botões - "Sim" e "Não"
   ResetLastError();
 
//--- Executar uma ação dependendo da variante selecionada
   if(choice==IDYES)
     {
      //--- Começar deletar arquivos
      PrintFormat("Tentando deletar todos os arquivos da pasta %s",foldername);
      if(FolderClean(foldername,0))
         PrintFormat("Arquivos foram deletados com sucesso, %d arquivos que restaram na pasta %s",
                     foldername,
                     FilesInFolder(foldername+"\\*.*",0));
      else
         PrintFormat("Falha ao deletar arquivos da pasta %s. Código de erro %d",foldername,GetLastError());
     }
   else
      PrintFormat("Exclusão cancelada");
//---
  }
//+------------------------------------------------------------------+
//| Retornar o número de arquivos na pasta especificada              |
//+------------------------------------------------------------------+
int FilesInFolder(string path,int flag)
  {
   int count=0;
   long handle;
   string filename;
//---
   handle=FileFindFirst(path,filename,flag);
//--- Se pelo menos um arquivo encontrado, procurar por mais arquivos
   if(handle!=INVALID_HANDLE)
     {
      //--- Mostrar o nome do arquivo
      PrintFormat("Arquivo %s encontrado",filename);
      //--- Aumentar o contador de arquivos/pastas encontrados
      count++;
      //--- Iniciar a pesquisa em todos arquivos/pastas
      while(FileFindNext(handle,filename))
        {
         PrintFormat("Arquivo %s encontrado",filename);
         count++;
        }
      //--- Não se esqueça de fechar o manipulador de pesquisa após a conclusão
      FileFindClose(handle);
     }
   else // Falha ao obter o manipulador
     {
      PrintFormat("Pesquisa nos arquivos na pasta %s falhou",path);
     }
//--- Retorna o resultado
   return count;
  }

Também Veja

FileFindFirst, FileFindNext, FileFindClose