22.11.6.6 写入文件

可以选择如下三种模式的任意一种:“新建”、“添加”或“覆盖”。有关数据存储顺序的更多信息,请参阅下面的“数据存储模式”一节。

_CF_write/_USB_write (文件夹名称、文件名、从地址中读取、偏移、字节数、模式)

存储格式概述

模式

名称

描述

0

新建

创建一个新文件。如果存在一个具有相同名称的文件,它将被删除。

1

添加

向指定文件添加数据。如果指定文件不存在,将会创建一个新文件。

2

覆盖

覆盖部分文件。如果指定偏移大于文件大小,将用0填充剩余区域,并将数据写入该区的后面。如果将偏移指定为文件数据的末尾,就相当于向文件添加数据。如果文件不存在,则会发生错误。有关该错误的更多信息,请参阅22.11.6.7 标签设置

表达式示例:

[w:[#INTERNAL]LS0200] = 0//偏移量(当模式为“新建”时为“0”)
[w:[#INTERNAL]LS0202] = 100 //字节数(100字节)。
[w:[#INTERNAL]LS0204] = 0  //模式(新建)。
_CF_write ("\DATA", "DATA0001.BIN", [w:[#INTERNAL]LS0100], [w:[#INTERNAL]LS0200],[w:[#INTERNAL]LS0202], [w:[#INTERNAL]:LS0204])

上例中,从LS0100中读取100字节的数据,以DATA0001.BIN为名保存在\DATA文件夹中。可以通过定义内部寄存器的偏移、字节数和模式间接定义字节数和模式。

用一个内部寄存器定义文件名

_CF_write ("\DATA", [w:[#INTERNAL]LS0100], [w:[#INTERNAL]LS0200], 0, 100, 0)

通过将文件名保存在LS0100中,可间接指定文件名。在本例中,按如下方式将文件名保存在LS0100至LS0106中。

在上例中,从LS0200中读取100字节的数据,并创建新文件("\DATA\DATA0001.BIN"),以保存数据。

存储格式表达式示例

在上例中,从LS0100中读取100字节的数据,DATA0001.BIN文件刚在\DATA文件夹中创建。

如果指定文件(如例子中的DATA0001.BIN)已经存在且执行了上面的语句,会从LS0100和之后区域中读取100个字节的数据并将其写入\DATA文件夹中的DATA0001.BIN文件。

如果指定文件(如例子中的DATA0001.BIN)已经存在且执行了上面的语句,就会读取保存在LS0100和之后区域的10个字节的数据,并覆盖保存在\DATA文件夹下DATA0001.BIN文件中的偏移之后第17个及之后的10个字节的数据。

(将被覆盖的文件小于偏移值和增加字节数总和。)

指定文件(如例子中的DATA0001.BIN)已经存在且文件大小是100字节。如果为覆盖操作将偏移设置为96字节,字节数设置为10字节,会读取保存在LS0100及之后区域中的10字节数据。然后,前4个字节的已读取数据会覆盖保存在文件中的第97个及之后的4字节数据,剩余的6字节数据被添加到文件数据的末尾。最终文件就包含了106字节的数据。

(要覆盖的文件小于偏移值。)

指定文件(如例子中的DATA0001.BIN)已经存在且文件大小是100字节。如果为覆盖操作将偏移设置为110字节,字节数设置为10字节,则会用0填充第101字节和第110字节之间的区域,从LS0100及之后区域中读取的10字节数据会被写入第111字节及之后的字节中。最终文件就包含了120字节的数据。