诚信为本
量力而为
当前位置:峰汇在线 > MQL语言 > MQL4中文帮助文档 > 正文

12 File functions 文件函数

本文目录

一组文件运行函数。
三个文件目录(补充指南)放置的地方:
/HISTORY/<current broker> ‐ FileOpenHistory 函数;
/EXPERTS/FILES ‐ 常规状况;
/TESTER/FILES ‐ 专门测试.
来自其他目录的工作文件禁止。

FileClose 关闭文件

void FileClose( int handle)
用 FileOpen() 函数打开先前已关闭的文件。
参量:  handle – 用 FileOpen()函数返回句柄。
示例:  int handle=FileOpen(“filename”, FILE_CSV|FILE_READ);
if(handle>0)
{
FileClose(handle);// 运行文件 …
}

FileDelete 删除文件

void FileDelete( string filename)
删除指定的文件名。获得详细的错误信息, 查看 GetLastError()函数。
如果他们是在 terminal_dir\experts\files 目录 (terminal_directory\tester\files, 在测试的情况下)或它的补充指南,只删除单个文件。
int lastError;
FileDelete(“my_table.csv”);
lastError=GetLastError();
if(laseError!=ERR_NOERROR)
{
Print(“错误 (“,lastError,”) 删除文件 my_table.csv”);
return(0);
}
参量: filename-目录和文件名 。
示例: //文件 my_table.csv 将从目录 terminal_dir\experts\files directory 删除

FileFlush 将缓存中的数据刷新到磁盘上去

void FileFlush( int handle)
将缓存中的数据刷新到磁盘上去 。
注解:FileFlush() 函数只有在文件被读或写中显示。
所有关闭的文件会自动从储存缓冲器上删除。所以在调用 FileClose() 函数之前不需要调用FileFlush() 函数。
参量: handle – 用 FileOpen()函数返回的句柄。
示例:  int bars_count=Bars;
int handle=FileOpen(“mydat.csv”,FILE_CSV|FILE_WRITE);
if(handle>0)
{
FileWrite(handle, “#”,”OPEN”,”CLOSE”,”HIGH”,”LOW”);
for(int i=0;i<bars_count;i++)
FileWrite(handle, i+1,Open[i],Close[i],High[i], Low[i]);
FileFlush(handle);

for(int i=0;i<bars_count;i++)
FileWrite(handle, i+1,Open[i],Close[i],High[i], Low[i]);
FileClose(handle);
}

FileIsEnding 文件结尾

bool FileIsEnding( int handle)
如果文件指针是在文件的末端,返回逻辑配齐,否则返回 false。获得详细的错误信息, 查看 GetLastError()函数。如果文件末端在只读期间到达,GetLastError() 函数将返回错ERR_END_OF_FILE (4099)。
参量: handle-用 FileOpen()函数返回的句柄。
示例: if(FileIsEnding(h1))
{
FileClose(h1);
return(false);
}

FileIsLineEnding

bool FileIsLineEnding( int handle)
如果 CSV 文件指针是在文件的末端,返回逻辑配齐,否则返回false.获得详细的错误信息,查看GetLastError()函数。
参量:handle – 用 FileOpen()函数返回的句柄。
示例:
if(FileIsLineEnding(h1))
{
FileClose(h1);
return(false);
}

FileOpen 打开文件

int FileOpen( string filename, int mode, void delimiter)
为输入或输出信息打开文件。如果函数失败,返回打开文件或‐1。获得详细的错误信息, 查看GetLastError()函数。
注解: 文件可能只在 terminal_directory\experts\files 文件夹(terminal_directory\tester\files或在它的子文件夹内被打开。
FILE_BIN 和 FILE_CSV 格式不能同时使用。
如果 FILE_WRITE 与 FILE_READ 不结合, 被打开的文件长度为零。如果还有一些包含数据的文件, 它们将被删除 。如果需要对现存文件添加数据, 必须使用 FILE_READ 和 FILE_WRITE文件组合打开 。
如果 FILE_READ 与 FILE_WRITE 不结合, 仅仅会打开现存文件。如果文件不存在, 可以使用FILE_WRITE 创建。
在一个板块内最多能够同时执行 32 个文件。
参量: filename – 文件名称
mode – 打开模式。可以是以下的一种或是组合: FILE_BIN, FILE_CSV, FILE_READ,FILE_WRITE。
delimiter – csv 文件的限定。默认值为’;’ 符号。
示例:
int handle;
handle=FileOpen(“my_data.csv”,FILE_CSV|FILE_READ,’;’);
if(handle<1)
{
Print(“未找到 my_data.dat 文件,错误”, GetLastError());
return(false);
}

FileOpenHistory 历史目录中打开文件

int FileOpenHistory( string filename, int mode, void delimiter)
在当前的历史目录(terminal_directory\history\server_name)或在它的子文件内打开文件 。如果函数失败, 返回文件描述部分或‐1 。获得详细的错误信息, 查看 GetLastError()函数。
注解: 客户终端可能连接到不同经纪公司的服务器。每个经纪公司的历史数据(HST 文件)会存储在 terminal_directory\history 相对应的子文件夹内。
文件在脱机时同样可以打开,不会有数据进入。
参量: filename-文件名称。
mode -打开模式。可以是以下的一种或是组合: FILE_BIN, FILE_CSV, FILE_READ,FILE_WRITE。
delimiter – csv 文件的限定。默认值为’;’ 符号。
示例:
int handle=FileOpenHistory(“USDX240.HST”,FILE_BIN|FILE_WRITE);
if(handle<1)
{
Print(“不能创建 USDX240.HST 文件”);
return(false);
}
// 运行文件
// …
FileClose(handle);

FileReadArray 将二进制文件读取到数组中

int FileReadArray( int handle, void array[], int start, int count)
将二进制文件读取到数组中,返回读取的条数。
获得详细的错误信息, 查看 GetLastError() 函数。
参量:
handle – 用 FileOpen()函数返回的句柄。
array[] – 写入的数组。
start – 在数组中存储的开始点。
count – 读取多少个对象 。
示例:
int handle;
double varray[10];
handle=FileOpen(“filename.dat”, FILE_BIN|FILE_READ);
if(handle>0)
{
FileReadArray(handle, varray, 0, 10);
FileClose(handle);
}

FileReadDouble 从文件中读取浮点型数据

double FileReadDouble( int handle, void size)
从文件中读取浮点型数据,数字可以是 8byte 的 double 型或者是 4byte 的 float 型。
获得错误信息,请查看 GetLastError() 函数。
参量:
handle – 用 FileOpen()函数返回的句柄。
size – 数字格式大小,DOUBLE_VALUE(8 bytes) 或者 FLOAT_VALUE(4 bytes)。
示例:
int handle;
double value;
handle=FileOpen(“mydata.dat”,FILE_BIN);
if(handle>0)
{
value=FileReadDouble(handle,DOUBLE_VALUE);
FileClose(handle);
}

FileReadInteger 从当前二进制文件读取整形型数据

int FileReadInteger( int handle, void size)
函数从当前二进制文件读取整形型数据,数字可以是 1,2,4byte 的长度 。如果格式大小不被指定, 系统设法读 4 字节的值。获得详细的错误信息, 请查看 GetLastError() 函数。
参量:
handle – 用 FileOpen()函数返回的句柄。
size – 数字格式大小,CHAR_VALUE(1 byte), SHORT_VALUE(2 bytes) 或者 LONG_VALUE(4 bytes)。
示例:
int handle;
int value;
handle=FileOpen(“mydata.dat”, FILE_BIN|FILE_READ);
if(handle>0)
{
value=FileReadInteger(h1,2);
FileClose(handle);
}

FileReadNumber

double FileReadNumber( int handle)
从当前文件位置在符号之前读取数字。只能为 CSV 文件。
获得详细的错误信息, 查看 GetLastError()函数。
参量: handle – 用 FileOpen()函数返回的句柄。
示例:
int handle;
int value;
handle=FileOpen(“filename.csv”, FILE_CSV, ‘;’);
if(handle>0)
{
value=FileReadNumber(handle);
FileClose(handle);
}

FileReadString 从当前文件位置读取字串符

string FileReadString( int handle, void length)
函数从当前文件位置读取字串符。适用于 CSV 和二进制文件。在文本文件中字串符在符号之前被读取。对于二进制文件, 被测量的计数将读取字串符。获得详细的错误信息, 查看GetLastError()函数。
参量:
handle – 用 FileOpen()返回的句柄。
length – 读取字符串长度 。
示例:
int handle;
string str;
handle=FileOpen(“filename.csv”, FILE_CSV|FILE_READ);
if(handle>0)
{
str=FileReadString(handle);
FileClose(handle);
}

FileSeek 文件指针移动

bool FileSeek( int handle, int offset, int origin)
在字节上函数移动文件指针是垂距的,从开始的一个新的位置指向末端或者当前文件位置。接下来读取或写入放置在一个新位置。
如果文件指针成功地被移动了,函数返回TRUEe,否则它返回 FALSE.获得详细的错误信息,查看GetLastError()函数。
参量:
handle – 用 FileOpen()函数返回的句柄。
offset – 设置的原点。
origin – 最初的位置。 值可以是以下任意常数:
SEEK_CUR – 当前位置,
SEEK_SET ‐ 开始位置,
SEEK_END ‐ 结束位置。
示例:
int handle=FileOpen(“filename.csv”, FILE_CSV|FILE_READ|FILE_WRITE, ‘;’);
if(handle>0)
{
FileSeek(handle, 0, SEEK_END);
//‐‐‐‐在文件末端添加数据
FileWrite(handle, data1, data2);
FileClose(handle);
handle=0;
}

FileSize 文件大小

int FileSize( int handle)
函数返回文件大小字节。获得详细的错误信息,查看 GetLastError() 函数。
参量: handle – 用 FileOpen()函数返回的句柄。
示例:
int handle;
int size;
handle=FileOpen(“my_table.dat”, FILE_BIN|FILE_READ);
if(handle>0)
{
size=FileSize(handle);
Print(“my_table.dat 大小为 “, 大小 ” bytes”);
FileClose(handle);
}

FileTell 文件指针的当前位置

int FileTell( int handle)
返回文件指针的当前位置。获得详细的错误信息,查看 GetLastError() 函数。
参量: handle – 用 FileOpen()函数返回的句柄。
示例:
int handle;
int pos;
handle=FileOpen(“my_table.dat”, FILE_BIN|FILE_READ);
// 读取数据
pos=FileTell(handle);
Print(“current position is “, pos);

FileWrite 写入文件

int FileWrite( int handle, …)
该函数的目的是便于书写的数据转换为 CSV 格式文件,自动插入限定符。在写入文件后,每行的尾端将会添加”\r\n” 符号。数字将会被转变成文本(查看 Print() 函数)。
如果生成错误,返回书写字或负值的计数。获得详细的错误信息,查看 GetLastError() 函数。
参量:
handle – 用 FileOpen()函数返回的句柄。
…   ‐   写入的数据,由逗号分离。 它可以是 63 个参量。当他们作为整数时,int 数据和双重类型自动地被转换成串,但不自动转换颜色、日期‐时间和 bool typesare 和写出的文件。
数组无法作为参量
示例:
int handle;
datetime orderOpen=OrderOpenTime();
handle=FileOpen(“filename”, FILE_CSV|FILE_WRITE, ‘;’);
if(handle>0)
{
FileWrite(handle, Close[0], Open[0], High[0], Low[0], TimeToStr(orderOpen));
FileClose(handle);
}

FileWriteArray 一个二进制文件写入数组

int FileWriteArray( int handle, object array[], int start, int count)
函数给一个二进制文件写入数组。一些 int、bool、日期‐时间和颜色类型书面元素作为 4 字节整数。 一些双重类型书面元素,作为 8 字节浮动小数点数字。一些字串符类型将自动地在每串末尾添加符号 “\r\n” 。
如果错误生成,返回书写字或负值的计数。 获得详细的错误信息,查看 GetLastError()函数。
参量:
handle – 用 FileOpen()函数返回的句柄。
array[] – 写数组。
start – 在数组内(第一个书面元素数字)开始索引。
count – 书写字的计数。
示例:
int handle;
double BarOpenValues[10];
//  复制前十个柱到数组
for(int i=0;i<10; i++)
BarOpenValues[i]=Open[i];
// 写入数组到文件
handle=FileOpen(“mydata.dat”, FILE_BIN|FILE_WRITE);
if(handle>0)
{
FileWriteArray(handle, BarOpenValues, 3, 7); // 写入最后 7 个元素
FileClose(handle);
}

FileWriteDouble 一个二进制文件以浮动小数点写入双重值

int FileWriteDouble( int handle, double value, void size)
函数给一个二进制文件以浮动小数点写入双重值。 如果格式指定为 FLOAT_VALUE,值将作为 4 字节浮动小数点数字写入 (的浮游物类型)。否则,它以 8 字节浮动小数点格式将被写入(双重类型)。如果错误生成,返回实际上书面字节数或负值。获得详细的错误信息, 查看 GetLastError() 函数。
参量:
handle – 用 FileOpen()函数返回的句柄。
value – 双精度值。
size – 选择格式。可以是以下的任意值:
DOUBLE_VALUE (8 字节,默认值)
FLOAT_VALUE (4 字节)。
示例:
int handle;
double var1=0.345;
handle=FileOpen(“mydata.dat”, FILE_BIN|FILE_WRITE);
if(handle<1)
{
Print(“不能打开错误文件‐”,GetLastError());
return(0);
}
FileWriteDouble(h1, var1, DOUBLE_VALUE);
//…
FileClose(handle);

FileWriteInteger 一个二进制文件写入整数值

int FileWriteInteger( int handle, int value, void size)
函数给一个二进制文件写入整数值。 如果大小是 SHORT_VALUE,值将作为 2 字节整数(短的类型)被写入。 如果大小是 CHAR_VALUE,值将作为 1 字节整数(炭灰类型)写入,并且,如果大小是 LONG_VALUE, 值将作为 4 字节整数(长的 int 类型)写入。
如果错误生成,返回实际上书面字节数或负值。
获得详细的错误信息, 查看 GetLastError() 函数。
参量:
handle – 用 FileOpen()函数返回的句柄。
value – 写入值
size – 选择格式。可以是以下任意值:
CHAR_VALUE (1 字节),
SHORT_VALUE (2 字节),
LONG_VALUE (4 字节,默认值)。
示例:
int handle;
int value=10;
handle=FileOpen(“filename.dat”, FILE_BIN|FILE_WRITE);
if(handle<1)
{
Print(“不能打开错误文件‐”,GetLastError());
return(0);
}
FileWriteInteger(handle, value, SHORT_VALUE);
//…
FileClose(handle);

FileWriteString 当前文件位置函数写入一个二进制文件字串符

int FileWriteString( int handle, string value, int length)
从当前文件位置函数写入一个二进制文件字串符。
如果错误生成,返回实际上书面字节数或负值。
获得详细的错误信息,查看 GetLastError() 函数。
参量:
handle – 用 FileOpen()函数返回的句柄。
value – 写入字串符。
length – 写的字串符的长度。如果字串符长度超出被测量的值,它将被削减。 如果它较短,它将由二进制 0s 延伸由特定长度决定。
示例:
int handle;
string str=”some string”;
handle=FileOpen(“filename.bin”, FILE_BIN|FILE_WRITE);
if(handle<1)
{
Print(“不能打开错误文件‐”,GetLastError());
return(0);
}
FileWriteString(h1, str, 8);
FileClose(handle);

打赏
版权所有转载请注明标题及链接:峰汇在线 » 12 File functions 文件函数
上一篇:
下一篇:
分享到: 更多 (0)

如您觉得此文不错请扫码打赏!

支付宝扫一扫打赏

微信扫一扫打赏