5.12 File functions文件函数

5.12  File functions文件函数

一组文件运行函数。

三个文件目录(补充指南)放置的地方:

/HISTORY/<current broker>——/FileOpenHistory函数;

/EXPERTS/FILES——常规状况;

/TESTER/FILES——专门测试。

来自其他目录的工作文件禁止。

5.12.1  FileClose关闭文件

void FileClose(int handle)

用FileOpen()函数打开先前已关闭的文件。

【参量】

Handle—用FileOpen()函数返回句柄。

【示例】

int handle=FileOpen”filename",FILE_CSV I FIL.E_READ );

if( handle>0)

//运行文件.

FileClose( handle);

}

5.12.2   FileDelete删除文件

void FileDelete( string filename)

删除指定的文件名。要获得详细的错误信息,请查看GetLastError ( )函数。

如果它们是在terminal_ ditfexperts'files目录(terminal_ directo叻estetifiles,在测试的情况下)或它的补充指南中,只删除单个文件。

int lastError;

FileDelete”my_ table. csv");

lastError=GetLastError();

if( laseError!=ERR_NOERROR)

{

Print”错误(" , lastError , ")删除文件my_ table. csv" ) ;

return(0);

}

【参量】

Filename—目录和文件名。

【示例】

//文件my_table. cav将从目录terminal  di}xperts'files directory中删除

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

void FileFlush(int handle)

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

注解:FileFlush)函数只有在文件被读或被写中显示。

所有关闭的文件会自动从储存缓冲器上删除。所以,在调用FileClose)函数之前不需要调用FileFlush)函数。

【参量】

Handle—用FileOpen)函数返回的句柄。

【示例】

5.12.4   FileIsEnding文件结尾

bool FileIsEnding( int handle)

如果文件指针是在文件的末端,返回逻辑配齐;否则,返回false。要获得详细的错误信息,请查看GefLastError)函数。如果文件末端在只读期间到达,GetLastError()函数将返回错误ERR_ END_OF_FILE (4099) 。

【参量】

Handle—用FileOpen)函数返回的句柄。

【示例】

if( FileIsEnding( hl))

{

FileClose( hl);

return (false );

5.12.5  FileIsLineEnding行末

bool FileIsLineEnding( int handle)

如果CSV文件指针是在文件的末端,返回逻辑配齐;否则,返回false o

要获得详细的错误信息,请查看GetLastError)函数。

【参量】

Handle—用FileOpen()函数返回的句柄。

【示例】

if( FileIsLineEnding( hl))

FileClose( hl);

return ( false );

5.12.6   FileOpen打开文件

int FileOpen(string filename,int mode,void delimiter)

为输人或输出信息打开文件。如果函数失败,返回打开文件或一1。要获得详细的错误信息,请查看GetLastError)函数。

注解:文件可能只在terminal_  directo吵xpertsYiles文件夹或在它的子文件夹内被打开。

FILE_ BIN和FILE_ CSV格式不能同时使用。

如果FILE_  WRITE与FILE_  READ不结合,被打开的文件长度为零。如果还有一些包含数据的文件,它们将被删除。如果需要对现存文件添加数据,必须使用FILE_ READ和FILE_  W RITE文件组合打开。

如果FILE_ READ与FILE_  WRITE不结合,仅仅会打开现存文件。如果文件不存在,可以使用FILE_  WRITE创建。

在一个板块内最多能够同时执行32个文件。

【参量】

Filename—文件名称。

mode—打开模式。可以是以下的一种或是组合:FILE _ BIN , FILECSV ,FILE_READ和FILE_WRITE。

Delimiter—   csv文件的限定。默认值为符号。

【示例】

int handle;

handle=FileOpen(”my_data. csv",FILE CSV I FILE_READ;’);

if( handle<I)

Print”未找到my_  data. dat文件,错误”,GetLastError( ) ) ;

return ( false

5.12.7  FileOpenHistory在历史目录中打开文件

int FileOpenHistory(string filename,int mode,void delimiter)

在当前的历史目录(terminal_  director户tistory}erver_name)或在它的子文件内打开文件。如果函数失败,返回文件描述部分或一1。要获得详细的错误信息,请查看GetLastError()函数。

注解:客户终端可能连接到不同经纪公司的服务器。每个经纪公司的历史数据(HST文件)会存储在terminal _ directory \ history相对应的子文件夹内。

文件在脱机时同样可以打开,不会有数据进人。

【参量】

Filename—文件名称。

mode—打开模式。可以是以下的一种或是组合:FILE _ BIN , FILE_SV ,FILE_READ和FILE_  WRITE。

Delimiter—   csv文件的限定。默认值为’;‘符号。

【示例】

int handle=FileDpenHistory(”USDX240. HS7"',FILE_BIN I FILE_WRITE);

if( handle<1)

Print”不能创建LSDX240. HST又件”

return ( False );

mode—打开模式。可以是以下的一种或是组合:FILE _ BIN , FILECSV ,FILE_READ和FILE_WRITE。

Delimiter—   csv文件的限定。默认值为‘符号。

【示例】

int handle;

handle=FileOpen(”my_data. csv",FILE CSV I FILE_READ,’);

if( handle<I)

Print”未找到my_  data. dat文件,错误”,GetLastError( ) ) ;return ( false

5.12.7  FileOpenHistory在历史目录中打开文件

int FileOpenHistory(string filename,int mode,void delimiter)

在当前的历史目录(terminal_  director户tistory}erver_name)或在它的子文件内打开文件。如果函数失败,返回文件描述部分或一1。要获得详细的错误信息,请查看GetLastError()函数。

注解:客户终端可能连接到不同经纪公司的服务器。每个经纪公司的历史数据(HST文件)会存储在terminal _ directory \ history相对应的子文件夹内。

文件在脱机时同样可以打开,不会有数据进人。

【参量】

Filename—文件名称。

mode—打开模式。可以是以下的一种或是组合:FILE _ BIN , FILE_CSV ,FILE_READ和FILE_  WRITE。

Delimiter—   csv文件的限定。默认值为’;‘符号。

【示例】

int handle=FileDpenHistory(”USDX240. HS7"',FILE_BIN I FILE_WRITE);

if( handle<1)

Print”不能创建LSDX240. HST文件”

return ( False );

}

//运行文件

//...

FileClose(handle);

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

int FileReadArray( int handle,void array」,int start,int count)

将二进制文件读取到数组中,返回读取的条数。

要获得详细的错误信息,请查看GetLastError()函数。

【参量】

Handle—用FileOpen)函数返回的句柄。

arrayl—写人的数组。

Start—在数组中存储的开始点。

Count—读取多少个对象。

【示例】

int handle;

double varray 10;

handle=FileOpen”filename. dat",FILE_BIN{FILE_READ);

if ( handle>0)

{

FileReadArray ( handle

FileClose( handle)varray,0,10);

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

double FileReadI)ouble( int handle,void size)

从文件中读取浮点型数据,数字可以是8 byte的double型,或者是4byte的float型。

要获得错误信息,请查看GetLastError()函数。

【参量】

Handle-

Size——用FileOpen()函数返回的句柄。

Size——数字格式大小,DOUBLE_VALUE ( 8 bytes)或者FLOAT_VAL-UE ( 4 bytes)。

【示例】

int handle;

double value;

handle=FileOpen”mydata. dat",FILE_BIN );

if ( handle>0)

value=FileReadDouble ( handle,DOUBLE_ VALUE);

FileClose( handle);

5.12.10  FileReadlnteger从当前二进制文件中读取整形型数据

int FileReadlnteger( int handle,void size)

从当前二进制文件中读取整形型数据,数字可以是1 ,2,4byte的长度。如果格式大小不被指定,系统设法读4字节的值。要获得详细的错误信息,

请查看GetLastError()函数。

【参量】

Handle—用FileOpen()函数返回的句柄。

Size—数字格式大小,CHAR _ VALUE ( 1  byte ) , SHORT _ VALUE ( 2bytes)或LONG_VALUE(4 bytes )。

【示例】

int handle;

int value;

handle=FileOpen”mydata. dat",FILE_BIN I FILE_READ );

if( handle>0)

value=FileReadlnteger( hl ,2)

FileClose( handle);

5.12.11  FileReadNumber读取文件数字

double FileReadNumber( int handle)

从当前文件位置在符号之前读取数字。只能为CSV文件。

要获得详细的错误信息,请查看GetLastError()函数。

【参量】

Handle—用FileOpen()函数返回的句柄。

【示例】

int handle;

int value;

handle二FileOpen”filename. csv".FILE_ CSV,);

if( handle>0)

{

value=FileReadIVumber( handle);

FileClose( handle);

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

string FileReadString (int handle,void length)

从当前文件位置读取字串符,适用于CSV和二进制文件。在文本文件中,字串符在符号之前被读取。对于二进制文件,被测量的计数将读取字串符。要获得详细的错误信息,请查看GetLastE rror)函数。

【参量】

Handle—用FileOpen)返回的句柄。

Length—读取字符串长度。

【示例】

int handle;

stung str;

handle=FileOpen”filename. csv",FILE CSV I FILE_READ );

if( handle>0)

{

str=FileReadString( handle);

FileClose ( handle );

5.12.13  FileSeek文件指针移动

boot FileSeek ( int handle,int offset,int origin)

在字节上,函数移动文件指针是垂距的,从开始的一个新的位置指向末端或者当前文件位置。接下来的读取或写人放置在一个新位置。

如果文件指针成功地被移动了,函数返回TRUEe;否则,返回FALSEo要获得详细的错误信息,请查看GetLastError()函数。

【参量】

Handle—用FileOpen)函数返回的句柄。

Offset—设置的原点。

Origin—最初的位置。值可以是以下任意常数:

SEEK_ CUR—当前位置;

SEEK_ SET—开始位置;

SEEK_ END—结束位置。

【示例】

int handle=FileOpen”filename. esv",FILE_ GSV I FILE_ READ I FILE_  WRITE,’;’);

if( handle>0)

FileSeek(handle,O,SEEK_ END);

//---一在文件末端添加数据

F'ileWrite( handle,datal,data2);

FileClose( handle);

handle=0;

5.12.14  FileSize文件大小

int FileSize(int handle)

返回文件大小字节。获得详细的错误信息,查看GetLastError()函数。

【参量】

Handle—用FileOpen)函数返回的句柄。

【示例】

int handle;

mt size

handle=FileOpen(”my_table. dat",FILE_BIN I FILE READ);

if( handle>0)

size=FileSize( handle )

Print () " my_table. dat大小为”,大小”bytes"

F'ileClose ( handle );

5.12.15   File丁ell文件指针的当前位置

int FileTell ( int handle)

返回文件指针的当前位置。获得详细的错误信息,查看GetLastError ( )

函数。

【参量】

Handle—用FileOpen)函数返回的句柄。

【示例】

     

5.12.16  FileWrite写入文件

int FileWrite( int handle,…)

该函数的目的是便于书写的数据转换为CSV格式文件,自动插入限定符。在写入文件后,每行的尾端将会添加’物”符号。数字将被转变成文本

(查看Print()函数)。

如果生成错误,返回书写字或负值的计数。

获得详细的错误信息,查看GetLastError( )函数。

【参量】

Handle

用FileOpen)函数返回的句柄。

...—写入的数据,由逗号分离。它可以是63个参量。当它们作为整数时,int数据和双重类型自动地被转换成串,但不自动转换颜色、日期一时间,布尔类型数据数组无法作为参量。

【示例】

int handle;

datetime orderOpen=OrderOpenTime);

handle=FileOpen”filename",FILE_CSV I FILE W RITE,’;’);

if( handle>0)

FileWrite( handle , Close ( 0 I,Open}O},High}O},I,ow } 0 } , TimeToStr( orderOpen ));

FileClose( handle);

5.12.17  FileWriteArray二进制文件写入数组

int FileWriteArray(int handle,object array(」,int start,int count

给一个二进制文件写人数组。int , boot、日期一时间和颜色类型书面元素作为4字节整数。一些双重类型书面元素,作为8字节浮动小数点数字。一些字串符类型将自动地在每串末尾添加符号撇。

如果错误生成,返回书写字或负值的计数。要获得详细的错误信息,请查看GetLastError()函数。

【参量】

Handle—用FileOpen()函数返回的句柄。

array—写数组。

Start—在数组内(第一个书面元素数字)开始索引。

Count—书写字的计数。

【示例】

int handle;

double BarOpenValues} 10};

//复制前10个柱到数组

for( int i=O;i<10;i++)

BarOpenValues}i} -Open}i};

//写入数组到文件

handle=FileOpen”mydata. dat" , FILE_BIN I FILE WRITE )

if( handle>0)

{

FileWriteArray(handle,BarOpenValues,3,7); //写入最后7个元素

FileClose(handle);

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

int FileWriteDouble( int handle,double value,void size)

给一个二进制文件以浮动小数点写人双重值。如果格式指定为FLOATVALUE,值将作为4字节浮动小数点数字写入(浮游物类型);否则,将以8字节浮动小数点格式写人(双重类型)。

如果错误生成,返回实际书面字节数或负值。

要获得详细的错误信息,请查看GetLastError()函数。

【参量】

Handle—用FileOpen)函数返回的句柄。

Value—双精度值。

Size—选择格式。可以是以下任意值:

DOUBLE_VALUE (8字节,默认值);

FLOAT_VALUE (4字节)。

【示例】

int handle;

double varl=0. 345;

handle=FileOpen(”mydata. dat",FILE_BIN I FILE  WRITE);

if( handle<1)

Print”不能打开错误文件一”,GetLastError( ) ) ;

return ( 0);

FileW riteDouble ( hl , varl,DOUBLE_VALUE);

\\...

FileClose( handle )

5.12.19  FileWritelnteger二进制文件写入整数值

int FileWriteInteger( int handle,int value,void size)

给一个二进制文件写人整数值。如果大小是SHORT_ VALUE,值将作为2字节整数(短的类型)被写人;如果大小是CHAR_ VALUE,值将作为I字节整数(炭灰类型)写入;并且,如果大小是LONG_ VALUE,值将作为4字节整数(长的int类型)写人。

如果错误生成,返回实际书面字节数或负值。

要获得详细的错误信息,请查看GetLastError()函数。

【参量】

Handle—用FileOpen)函数返回的句柄。

V alue—写人值。

Size—选择格式。可以是以下任意值:

CHAR_ VALUE(1字节);

SHORT_VALUE (2字节);

LONG_VALUE (4字节,默认值)。

【示例】

int handle;

int value=10;

handle=FileOpen”filename. dat" , FILE_ BIN I FILE_WRITE );

if( handle<1)

{

Print”不能打开错误文件一”,GetLastError( ) ) ;

return ( 0);

}

File W riteInteget(handle,value,SHORT_VALUE);

//一

FileClose( handle);

5.12.20   FileWriteString当前文件位置函数写入

二进制文件字串符

int FileWriteString( int handle,string value,int length)

从当前文件位置函数写人一个二进制文件字串符。

如果错误生成,返回实际书面字节数或负值。

获得详细的错误信息,查看GetLastError)函数。

【参量】

Handle—用FileOpen)函数返回的句柄。

Value—写入字串符。

Length—写人字串符的长度。如果字串符长度超出被测量的值,它将被削减。如果它较短,它将由二进制Os延伸,由特定长度决定。

【示例】

int handle;

string str=”some string";

handle=FileOpen(”filename. bin",FILE_BIIV I FILE_WRITE);

if( handle<1)

{

Print(”不能打开错误文件一‘,,GetLastError( ) ) ;

return ( 0 );

}

FileWriteString( hl,str,8);

FileClose(handle);