FolderDelete

函数删除指定目录,如果文件夹不是空的,就不能被删除。

bool  FolderDelete(

   string  folder_name,       // 带有要删除的文件夹名的字符串

   int     common_flag=0      // 范围

   );

参量

folder_name

[in] 想要删除的目录名称,包括文件夹的全部路径。

common_flag=0

[in] Flag 决定目录位置,如果common_flag=FILE_COMMON,那么目录在所有客户端的共享目录中 \Terminal\Common\Files,否则,目录会在本地文件夹中(MQL5\Files 或者 MQL5\tester\Files )。

返回值

如果成功返回true, 否则false。

注释

出于安全考虑,工作文件必须严格由MQL5语言管理。使用MQL5实 施文件操作的文件意味着,不能在文件沙箱外。

如果目录至少包括一个文件和/或子目录,目录就不能删除,必须先清理。使用 FolderClean() 清理文件夹中所有文件或者子目录。

示例 :

//+------------------------------------------------------------------+

//|                                            Demo_FolderDelete.mq5 |

//|                        Copyright 2011, MetaQuotes Software Corp. |

//|                                             https://www.mql5.com |

//+------------------------------------------------------------------+

#property copyright "Copyright 2011, MetaQuotes Software Corp."

#property link      "https://www.mql5.com"

#property version   "1.00"

//--- 描述

#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."

 

//--- 启动脚本时显示输入参数对话框

#property script_show_inputs

//--- 输入参数

input string   firstFolder="empty";    // 空文件夹

input string   secondFolder="nonempty";// 将会创建文件的文件夹

string filename="delete_me.txt";       // 将在secondFolder文件夹创建的文件名称

//+------------------------------------------------------------------+

//| 脚本程序启动函数                                                   |

//+------------------------------------------------------------------+

void OnStart()

  {

//--- 在这里写下文件句柄

   int handle;

//--- 找出我们正在工作的文件夹

   string working_folder=TerminalInfoString(TERMINAL_DATA_PATH)+"\\MQL5\\Files";

//--- 调试信息   

   PrintFormat("working_folder=%s",working_folder);

//--- 试图创建MQL5\Files路径相关的空文件夹

   if(FolderCreate(firstFolder,0)) // 0 意味着我们在程序端的本地文件夹工作

     {

      //--- 向已创建的文件夹输入全路径

      PrintFormat("Folder %s has been created",working_folder+"\\"+firstFolder);

      //--- 重置错误代码

      ResetLastError();

     }

   else

      PrintFormat("Failed to create folder %s. Error code %d",working_folder+"\\"+firstFolder, GetLastError());



//--- 现在使用FileOpen()函数创建一个非空文件夹

   string filepath=secondFolder+"\\"+filename;  // 形成我们想要打开写在不存在文件夹中的路径文件

   handle=FileOpen(filepath,FILE_WRITE|FILE_TXT); // 这种情况下FILE_WRITE标识是必须的,请见Help查询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));

//--- 短暂停顿5秒来阅读图表中的信息

   Sleep(5000); // Sleep() 不能用在指标中!

 

//--- 显示询问用户的对话框

   int choice=MessageBox(StringFormat("Do you want to delete folders %s and %s?", firstFolder, secondFolder),

                         "Deleting folders",

                         MB_YESNO|MB_ICONQUESTION); //  两个按钮 - "Yes" 和 "No"

 

//--- 根据选定的变量运行一个行为

   if(choice==IDYES)

     {

      //--- 从图表删除评论

      Comment("");

      //--- 添加信息到“专家”日志

      PrintFormat("Trying to delete folders %s and %s",firstFolder, secondFolder);

      ResetLastError();

      //--- 删除空文件夹

      if(FolderDelete(firstFolder))

         //--- 由于文件夹为空,应该会出现以下信息

         PrintFormat("Folder %s has been successfully deleted",firstFolder);

      else

         PrintFormat("Failed to delete folder %s. Error code=%d", firstFolder, GetLastError());



      ResetLastError();

      //--- 删除包含文件的文件夹 

      if(FolderDelete(secondFolder))

         PrintFormat("Folder %s has been successfully deleted", secondFolder);

      else

         //--- 由于文件夹包含文件,应该会出现下列信息

         PrintFormat("Failed to delete folder %s. Error code=%d", secondFolder, GetLastError());

     }

   else

      Print("Deletion canceled");

//---

  }

另见

FileOpen(), FolderClean(), FileMove()