mql4的文件写入怎样才能续写?使用filewrite命令时总是把原先文件覆盖写入,怎么实现原文件基础上追加续写?

 
是有什么参数我不知道吗?还是得用别的命令?
 

打开文件后,把文件指针定位到末尾处,再写就可以了。

有个 FileSeek函数,就可以把光标定位到末尾,然后再写入就不会覆盖了。

FileSeek(file_handle,0,SEEK_END);

加入这段代码再写入就可以了。

 
Shaofei Chen:

打开文件后,把文件指针定位到末尾处,再写就可以了。

有个 FileSeek函数,就可以把光标定位到末尾,然后再写入就不会覆盖了。

FileSeek(file_handle,0,SEEK_END);

加入这段代码再写入就可以了。

不对的,还是把原来的文件清干净了。

 
Shaofei Chen:

打开文件后,把文件指针定位到末尾处,再写就可以了。

有个 FileSeek函数,就可以把光标定位到末尾,然后再写入就不会覆盖了。

FileSeek(file_handle,0,SEEK_END);

加入这段代码再写入就可以了。

这个函数是可以做到的

 

還是會被覆寫掉就是定位錯誤 代碼用的位置或是方法錯誤才會這樣

 
两方法:一是读取原文件str,然后与新文件合并,str+=newstr;再次执行写入str.二是使用FileSeek()将文件指针定位到文件尾,需要注意的是此函数的第二个参数是字节数,要定义指针到文件尾,也得先读取原文件,并计算文件字节大小,然后,函数的第二个参数就是移位这个字节数大小。
 
Lin Luo:
两方法:一是读取原文件str,然后与新文件合并,str+=newstr;再次执行写入str.二是使用FileSeek()将文件指针定位到文件尾,需要注意的是此函数的第二个参数是字节数,要定义指针到文件尾,也得先读取原文件,并计算文件字节大小,然后,函数的第二个参数就是移位这个字节数大小。


很简单的东西,你这搞得太复杂了,不需要计算字节长度。

另外说下 FileSeek(file_handle,0,SEEK_END);  这里的0就是相对文件尾的偏移字节数,如果该参数是0,就表示文件指针移动到距离文件尾0字节的位置,也就是文件尾。

 

这个问题其实非常简单,两个要点:

1. 使用FileOpen时,如果仅仅只有FILE_WRITE则每次打开文件时会删除文件内容,如果文件不存在就创建新的文件。

   必须FILE_WRITE|FILE_READ这样的组合标志,打开文件时就不会删除文件已有内容,如果文件不存在就创建新的文件。

2. 文件创建好了,如果要写入数据到文件尾时,把文件指针定位到文件尾,方法是  FileSeek(file_handle,0,SEEK_END)。

    如果是连续续写,则没有必要移动文件指针,因为每次写入数据结束,文件指针就位于文件末尾。



 
Ziheng Zhuang:

这个问题其实非常简单,两个要点:

1. 使用FileOpen时,如果仅仅只有FILE_WRITE则每次打开文件时会删除文件内容,如果文件不存在就创建新的文件。

   必须FILE_WRITE|FILE_READ这样的组合标志,打开文件时就不会删除文件已有内容,如果文件不存在就创建新的文件。

2. 文件创建好了,如果要写入数据到文件尾时,把文件指针定位到文件尾,方法是  FileSeek(file_handle,0,SEEK_END)。

    如果是连续续写,则没有必要移动文件指针,因为每次写入数据结束,文件指针就位于文件末尾。



大神做了詳細的說明 論壇有你 一切會更好

 

我觉得好像也是没必要搞那么复杂

“更新”才需要那么复杂,“续写”不需要那么麻烦

建议如果能把需求描述的特别到位可以变相表述,最好的方式还是具体的案例就是说清楚到底需要干啥

原因: