53 lines
2.3 KiB
MQL5
53 lines
2.3 KiB
MQL5
//+------------------------------------------------------------------+
|
|
//| FileCopy.mq5 |
|
|
//| Copyright 2021, MetaQuotes Ltd. |
|
|
//| https://www.mql5.com |
|
|
//+------------------------------------------------------------------+
|
|
#include "..\..\Include\PRTF.mqh"
|
|
|
|
const string source = "MQL5Book/source";
|
|
const string destination = "MQL5Book/destination";
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| Script program start function |
|
|
//+------------------------------------------------------------------+
|
|
void OnStart()
|
|
{
|
|
// try copy a nonexistent file
|
|
PRTF(FileCopy(source, 0, destination, FILE_COMMON)); // false / FILE_NOT_EXIST(5019)
|
|
// create new file
|
|
int handle = PRTF(FileOpen(source, FILE_TXT | FILE_WRITE)); // 1
|
|
// write some text
|
|
PRTF(FileWriteString(handle, "Test Text\n")); // 22
|
|
// flush to disk but keep open (locked)
|
|
FileFlush(handle);
|
|
|
|
// the next call will fail, because file was open without FILE_SHARE_READ
|
|
PRTF(FileCopy(source, 0, destination, FILE_COMMON)); // false / CANNOT_OPEN_FILE(5004)
|
|
|
|
// now close it (and unlock)
|
|
FileClose(handle);
|
|
|
|
PRTF(FileGetInteger(source, FILE_CREATE_DATE)); // 1629757115, example
|
|
PRTF(FileGetInteger(source, FILE_MODIFY_DATE)); // 1629757115, example
|
|
|
|
// wait a bit to make noticable gap
|
|
// between creation and modification times in the copy below
|
|
Sleep(3000);
|
|
|
|
// try to copy it again
|
|
PRTF(FileCopy(source, 0, destination, FILE_COMMON)); // true
|
|
PRTF(FileGetInteger(destination, FILE_CREATE_DATE, true)); // 1629757118, +3 seconds
|
|
PRTF(FileGetInteger(destination, FILE_MODIFY_DATE, true)); // 1629757115, example
|
|
|
|
// now try to move the copy back over original one
|
|
// this should fail because overwriting is not allowed by default
|
|
PRTF(FileMove(destination, FILE_COMMON, source, 0)); // false / FILE_CANNOT_REWRITE(5020)
|
|
|
|
// and now it should succeed thanks to FILE_REWRITE
|
|
PRTF(FileMove(destination, FILE_COMMON, source, FILE_REWRITE)); // true
|
|
|
|
// final cleanup for next runs of the test
|
|
FileDelete(source);
|
|
}
|
|
//+------------------------------------------------------------------+
|