Main Content

fwrite

将数据写入二进制文件

说明

示例

fwrite(fileID,A) 将数组 A 的元素按列顺序以 8 位无符号整数的形式写入一个二进制文件。该二进制文件由文件标识符 fileID 指示。使用 fopen 可打开文件并获取 fileID 值。完成写入后,请调用 fclose(fileID) 来关闭文件。

示例

fwrite(fileID,A,precision) 按照 precision 说明的形式和大小写入 A 中的值。

fwrite(fileID,A,precision,skip) 在写入每个值之前跳过 skip 指定的字节数或位数。

示例

fwrite(fileID,A,precision,skip,machinefmt) 另外还指定将字节或位写入文件的顺序。skip 参数为可选参数。

count = fwrite(___) 返回 Afwrite 已成功写入到文件的元素数。您可将此语法与上述语法中的任何输入参数一起使用。

示例

全部折叠

打开名称为 nine.bin 的文件以便写入。在对 fopen 的调用中使用 'w' 指定写访问权限。

fileID = fopen('nine.bin','w');

fopen 返回文件标识符 fileID

将从 1 到 9 的整数以 8 位无符号整数的形式写入。

fwrite(fileID,[1:9]);

关闭文件。

fclose(fileID);

打开名称为 magic5.bin 的文件以便写入。

fileID = fopen('magic5.bin','w');

写入 5×5 幻方矩阵的 25 个元素。使用 precision 参数 'integer*4' 可以写入 4 字节整数。

fwrite(fileID,magic(5),'integer*4');

关闭文件。

fclose(fileID);

写入一个包含 4×4 幻方矩阵、以双精度浮点数形式存储元素的二进制文件。

fileID = fopen('magic4.bin','w');
fwrite(fileID,magic(4),'double');
fclose(fileID);

以写访问权限打开文件 magic4.bin,以便向文件追加内容。在 fopen 调用中指定文件访问类型 'a'

fileID = fopen('magic4.bin','a');

将一个由零组成的 4×4 矩阵追加到文件中。然后关闭文件。

fwrite(fileID,zeros(4),'double');
fclose(fileID);

将随机的双精度数值写入名称为 myfile.bin 的文件,以便在 big-endian 系统上使用。在 fwrite 调用中指定 'ieee-be'machinefmt 值,以便指示 big-endian 字节排序。

fileID = fopen('myfile.bin','w');
fwrite(fileID,rand(4),'double','ieee-be');
fclose(fileID);

输入参数

全部折叠

文件标识符,指定为从 fopen 获取的整数,1 表示标准输出(屏幕),2 表示标准错误。

要写入的数据,指定为数值数组、字符数组或字符串数组。

虽然 fwrite 支持写入字符或字符串数据,但这样做会导致意外行为,因此不推荐这样做。

如果您使用 fwrite 写入字符或字符串数据,请在调用 fopen 打开文件进行读取或写入时指定文本编码,并将精度指定为 char

示例: [1,2,3;4,5,6]

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string
复数支持:

要写入的值的类和大小(以位为单位),指定为“精度”列中列出的字符向量或字符串标量之一。

值类型精度位(字节)

无符号整数

'uint'

32 (4)

'uint8'

8 (1)

'uint16'

16 (2)

'uint32'

32 (4)

'uint64'

64 (8)

'uchar'

8 (1)

'unsigned char'

8 (1)

'ushort'

16 (2)

'ulong'

32 (4)

'ubitn'

1n64

有符号整数

'int'

32 (4)

'int8'

8 (1)

'int16'

16 (2)

'int32'

32 (4)

'int64'

64 (8)

'integer*1'

8 (1)

'integer*2'

16 (2)

'integer*4'

32 (4)

'integer*8'

64 (8)

'schar'

8 (1)

'signed char'

8 (1)

'short'

16 (2)

'long'

32 (4)

'bitn'

1n64

浮点数

'single'

32 (4)

'double'

64 (8)

'float'

32 (4)

'float32'

32 (4)

'float64'

64 (8)

'real*4'

32 (4)

'real*8'

64 (8)

字符

'char*1'

8 (1)

'char'

MATLAB® char 类型不是固定大小,字节数取决于与文件关联的编码方案。使用 fopen 设置编码。

如果指定 bitnubitn 的精度,则 fwrite 会使范围之外的所有值饱和。

注意

要在 MATLAB 中保留 NaNInf 值,请读取和写入 doublesingle 类的数据。

写入每个值之前要跳过的字节数,指定为标量。如果将 precision 指定为 bitnubitn,请以位为单位指定 skip

使用 skip 参数将数据插入到固定长度记录的非连续字段中。

在文件中写入字节的顺序,指定为下表中的字符向量或字符串标量之一。对于 bitnubitn 精度,machinefmt 会指定字节中位的写入顺序,而字节的写入顺序仍与系统字节顺序相同。

'n''native'

系统字节排序方式(默认)

'b''ieee-be'

Big-endian 排序

'l''ieee-le'

Little-endian 排序

's''ieee-be.l64'

Big-endian 排序,64 位长数据类型

'a''ieee-le.l64'

Little-endian 排序,64 位长数据类型

默认情况下,当前支持的所有平台都使用 little-endian 排序方式对新文件进行排序。现有二进制文件可以使用 big-endian 或 little-endian 排序方式。

扩展功能

版本历史记录

在 R2006a 之前推出

全部展开