主要内容

fwrite

R2026b

将数据写入二进制文件

描述

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(___) 返回 A 中 fwrite 已成功写入到文件的元素数。您可将此语法与上述语法中的任何输入参量一起使用。

示例

全部折叠

打开名称为 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 不支持写入 Internet URL。

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

虽然 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'

1 ≤ n ≤ 64

有符号整数

'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'

1 ≤ n ≤ 64

浮点数

'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 设置编码。

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

注意

要在 MATLAB 中保留 NaN 和 Inf 值,请读取和写入 double 或 single 类的数据。

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

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

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

'n' 或 'native'

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

'b' 或 'ieee-be'

Big-endian 排序

'l' 或 'ieee-le'

Little-endian 排序

's' 或 'ieee-be.l64'

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

'a' 或 'ieee-le.l64'

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

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

扩展功能

全部展开

版本历史记录

在 R2006a 之前推出

全部展开