127 lines
6.4 KiB
Markdown
127 lines
6.4 KiB
Markdown
# FolderDelete
|
||
|
||
The function removes the specified directory. If the folder is not empty, then it can't be removed.
|
||
|
||
```
|
||
bool FolderDelete(
|
||
string folder_name, // String with the name of the folder to delete
|
||
int common_flag=0 // Scope
|
||
);
|
||
|
||
```
|
||
|
||
Parameters
|
||
|
||
folder_name
|
||
|
||
[in] The name of the directory you want to delete. Contains the full path to the folder.
|
||
|
||
common_flag=0
|
||
|
||
[in] [Flag](/en/docs/constants/io_constants/fileflags) determining the location of the directory. If common_flag=FILE_COMMON, then the directory is in the shared folder for all client terminals \Terminal\Common\Files. Otherwise, the directory is in a local folder (MQL5\Files or MQL5\Tester\Files in the case of testing).
|
||
|
||
Return Value
|
||
|
||
Returns true if successful, otherwise false.
|
||
|
||
Note
|
||
|
||
For security reasons, work with files is strictly controlled in the MQL5 language. Files with which file operations are conducted using MQL5 means, cannot be outside the file sandbox.
|
||
|
||
If the directory contains at least one file and/or subdirectory, then this directory can't be deleted, it must be cleared first. [FolderClean()](/en/docs/files/folderclean) is used to clear a folder of all its files or subfolders.
|
||
|
||
Example:
|
||
|
||
```
|
||
//+------------------------------------------------------------------+
|
||
//| Demo_FolderDelete.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"
|
||
//--- Description
|
||
#property description "The script shows a sample use of FolderDelete()."
|
||
#property description "First two folders are created; one of them is empty, the second one contains a file."
|
||
#property description "When trying to delete a non-empty folder, an error is returned and a warning is shown."
|
||
|
||
//--- Show the dialog of input parameters when starting the script
|
||
#property script_show_inputs
|
||
//--- Input parameters
|
||
input string firstFolder="empty"; // An empty folder
|
||
input string secondFolder="nonempty";// The folder, in which one file will be created
|
||
string filename="delete_me.txt"; // The name of the file that will be created in folder secondFolder
|
||
//+------------------------------------------------------------------+
|
||
//| Script program start function |
|
||
//+------------------------------------------------------------------+
|
||
void OnStart()
|
||
{
|
||
//--- Write the file handle here
|
||
int handle;
|
||
//--- Find out in what folder we are working
|
||
string working_folder=TerminalInfoString(TERMINAL_DATA_PATH)+"\\MQL5\\Files";
|
||
//--- A debug message
|
||
PrintFormat("working_folder=%s",working_folder);
|
||
//--- Trying to create an empty folder relative to path MQL5\Files
|
||
if(FolderCreate(firstFolder,0)) // 0 means that we are working in the local folder of the terminal
|
||
{
|
||
//--- Enter the full path to the created folder
|
||
PrintFormat("Folder %s has been created",working_folder+"\\"+firstFolder);
|
||
//--- Reset the error code
|
||
ResetLastError();
|
||
}
|
||
else
|
||
PrintFormat("Failed to create folder %s. Error code %d",working_folder+"\\"+firstFolder, GetLastError());
|
||
|
||
//--- Now create a non-empty folder using the FileOpen() function
|
||
string filepath=secondFolder+"\\"+filename; // Form path to file that we want to open to write in a nonexistent folder
|
||
handle=FileOpen(filepath,FILE_WRITE|FILE_TXT); // Flag FILE_WRITE in this case is obligatory, see Help for FileOpen
|
||
if(handle!=INVALID_HANDLE)
|
||
PrintFormat("File %s has been opened for reading",working_folder+"\\"+filepath);
|
||
else
|
||
PrintFormat("Failed to create file %s in folder %s. Error code=",filename,secondFolder, GetLastError());
|
||
|
||
Comment(StringFormat("Prepare to delete folders %s and %s", firstFolder, secondFolder));
|
||
//--- A small pause of 5 seconds to read a message in the chart
|
||
Sleep(5000); // Sleep() cannot be used in indicators!
|
||
|
||
//--- Show a dialog and ask the user
|
||
int choice=MessageBox(StringFormat("Do you want to delete folders %s and %s?", firstFolder, secondFolder),
|
||
"Deleting folders",
|
||
MB_YESNO|MB_ICONQUESTION); // Two buttons - "Yes" and "No"
|
||
|
||
//--- Run an action depending on the selected variant
|
||
if(choice==IDYES)
|
||
{
|
||
//--- Delete the comment form the chart
|
||
Comment("");
|
||
//--- Add a message into the "Experts" journal
|
||
PrintFormat("Trying to delete folders %s and %s",firstFolder, secondFolder);
|
||
ResetLastError();
|
||
//--- Delete the empty folder
|
||
if(FolderDelete(firstFolder))
|
||
//--- The following message should appear since the folder is empty
|
||
PrintFormat("Folder %s has been successfully deleted",firstFolder);
|
||
else
|
||
PrintFormat("Failed to delete folder %s. Error code=%d", firstFolder, GetLastError());
|
||
|
||
ResetLastError();
|
||
//--- Delete the folder that contains a file
|
||
if(FolderDelete(secondFolder))
|
||
PrintFormat("Folder %s has been successfully deleted", secondFolder);
|
||
else
|
||
//--- The following message should appear since the folder contains a file
|
||
PrintFormat("Failed to delete folder %s. Error code=%d", secondFolder, GetLastError());
|
||
}
|
||
else
|
||
Print("Deletion canceled");
|
||
//---
|
||
}
|
||
|
||
```
|
||
|
||
See also
|
||
|
||
[FileOpen()](/en/docs/files/fileopen), [FolderClean()](/en/docs/files/folderclean), [FileMove()](/en/docs/files/filemove)
|