从文件中读

读取二进制文件的数据

描述

一种=的fread(FILEID读取从打开的二进制文件数据到列向量一种并将文件指针定位在文件结束标记处。二进制文件由文件标识符表示,FILEID。采用打开外部文件以打开该文件并获取FILEID价值。当您完成阅读时,通过调用来关闭文件FCLOSE(FILEID)

一种=的fread(FILEIDsizeA将文件数据读入数组,一种维度,sizeA,并将文件指针置于最后读取的值之后。从文件中读填充一种在列的顺序。

一种=的fread(FILEIDsizeA精确根据所描述的形式和大小解释值的文件中精确。该sizeA参数是可选的。

一种=的fread(FILEIDsizeA精确跳跃跳过指定的字节数或位跳跃在该文件中读取每个值之后。该sizeA参数是可选的。

一种=的fread(FILEIDsizeA精确跳跃machinefmt进一步指定用于读取字节或比特的文件中的顺序。该sizeA跳跃参数都是可选的。

[一种计数] =的fread(___额外返回的字符数从文件中读读到一种。您可以将此语法与前面语法的任何输入参数一起使用。

例子

全部收缩

写一个九元素矢量到样本文件,nine.bin

文件标识= fopen (“nine.bin”'W');写入文件(文件标识,[1:9]);FCLOSE(FILEID);

将文件中的所有数据读入类向量。默认情况下,从文件中读每次读取一个文件1字节,解释每个字节为8位无符号整数(uint8),并返回a阵列。

文件标识= fopen (“nine.bin”);A =的fread(FILEID)
A =9×11 2 3 4 5 6 7 8 9

从文件中读返回一个列向量,具有用于在文件中的每个字节的一个元素。

查看信息一种

谁是一种
名称大小字节类属性的9X1 72双

关闭文件。

FCLOSE(FILEID);

创建一个名为doubledata.bin含有9双精度值。

文件标识= fopen (“doubledata.bin”'W');写入文件(文件标识,魔法(3),'双');FCLOSE(FILEID);

打开文件,doubledata.bin,并将文件中的数据读入一个3×3的数组中,一种。指定源数据是类

文件标识= fopen (“doubledata.bin”);A =的fread(FILEID,[3 3],'双'
A =3×38 1 6 3 5 7 4 9 2

关闭文件。

FCLOSE(FILEID);

读取文件内容,fread.m。移调输出数组,一种所以,这是一个行向量。

文件标识= fopen ('fread.m');一个=从文件中读(文件标识,“*字符”)”;FCLOSE(FILEID);

从文件中读返回字符阵列,一种

创建一个名为nine.bin,包含从1到9的值。将数据写成uint16值。

文件标识= fopen (“nine.bin”'W');的fwrite(FILEID,[1:9],“uint16”);FCLOSE(FILEID);

读前六个值成3×2阵列。指定源数据是类uint16

文件标识= fopen (“nine.bin”);A =的fread(FILEID,[3,2],“uint16”
A =3×21 4 2 5 3 6

从文件中读返回填充列方向与从该文件的前六个值的阵列,nine.bin

返回到文件的开头。

frewind(文件标识)

一次读取两个值,并读取下一个值之前跳过一个值。使用指定格式精确值,'2 * UINT16'。由于数据类uint16,一个值由2个字节表示。因此,指定跳跃参数作为2

精度='2 * UINT16';跳过= 2;B =的fread(FILEID,[2,3],精度,跳过)
B =2×31 4 7 2 5 8

从文件中读返回一个2×3阵列填充逐列与来自值nine.bin

关闭文件。

FCLOSE(FILEID);

用二进制编码的十进制(BCD)值创建一个文件。

海峡= [“AB”;“CD”;“英孚”;'F A'];文件标识= fopen (“bcd.bin”'W');的fwrite(FILEID,HEX2DEC(STR),'ubit8');FCLOSE(FILEID);

一次读取1个字节。

文件标识= fopen (“bcd.bin”);onebyte =的fread(FILEID,4,‘* ubit8‘);

显示BCD值。

disp (dec2hex (onebyte))
AB CD EF英足总

使用返回到文件的开头frewind。如果你在一个小端系统上的时间读4位,搜索结果将显示在错误的顺序。

frewind(fileID) err = fread(fileID,8,‘* ubit4‘);DISP(DEC2HEX(ERR))
B A D C F E A F

使用返回到文件的开头frewind。读取数据的4位在时间和以前一样,但指定大端排序,以显示正确的结果。

frewind(FILEID)正确=的fread(FILEID,8,‘* ubit4‘'IEEE-是');DISP(DEC2HEX(正确))
A B C dêF F甲

关闭文件。

FCLOSE(FILEID);

输入参数

全部收缩

打开的二进制文件的文件标识符,指定为整数。以前读文件,从文件中读,您必须使用打开外部文件以打开该文件并获取FILEID

数据类型:

输出阵列的尺寸,一种,指定为天道酬勤,一个整数,或一个双元素行向量。

形式的sizeA输入 输出阵列的尺寸,一种
天道酬勤 列向量,每个元素在文件中包含一个值。
ñ 与列向量ñ元素。
(m, n) -通过-ñ基质,填充在列的顺序。ñ天道酬勤,但不能。

类和大小(以要读取的值的位为单位),在下列形式之一中指定为字符向量或字符串标量。可选地,输入指定输出矩阵的类,一种

形式的精确输入 描述
输入值是由指定的类的。输出矩阵一种是一流的
例子:'INT16'
=>产量 输入值是由指定的类的。类输出矩阵的,一种,由产量
例子:'INT8 =>符'
* 输入值和输出矩阵,一种,都属于所指定的类。为ñUBITñ精度,输出具有可包含输入最小的类。
例子:‘* ubit18‘
这相当于'ubit18 => UINT32'

ñ*
ñ*=>产量

ñ跳过由指定的字节数前值跳跃论点。
例子:'4 * INT8'

下表显示了可能的值产量

值类型 精确 位(字节)

整数,无符号

'UINT'

32 (4)

“uint8”

8(1)

“uint16”

16(2)

'UINT32'

32 (4)

'UINT64'

64(8)

'UCHAR'

8(1)

'无符号字符'

8(1)

'USHORT'

16(2)

'ULONG'

32 (4)

“ubitñ

1ñ64

整数,签署了

“诠释”

32 (4)

'INT8'

8(1)

'INT16'

16(2)

“int32”

32 (4)

'的Int64'

64(8)

的整数* 1

8(1)

'整数* 2'

16(2)

'整数* 4'

32 (4)

的整数* 8

64(8)

'SCHAR'

8(1)

“签名字符”

8(1)

“短”

16(2)

“长”

32 (4)

“位ñ

1ñ64

浮点数字

“单一”

32 (4)

'双'

64(8)

'浮动'

32 (4)

'FLOAT32'

32 (4)

'float64'

64(8)

'真正的* 4'

32 (4)

'真正的* 8'

64(8)

人物

“char * 1”

8(1)

“字符”

取决于与文件关联的编码方案。设置编码打开外部文件

对于大多数值如果从文件中读在读取完整的值之前到达文件的末尾,它不会返回最终值的结果。然而,如果ñUBITñ, 然后从文件中读返回的最终值的局部结果。

注意

保留为NaN天道酬勤MATLAB中的值®,读写类数据

数据类型:烧焦|字符串

的字节数读取每个值,指定为一个标量之后跳过。如果指定了精确ñUBITñ,指定跳跃在碎片。

使用跳跃参数读取来自于固定长度的记录不连续的字段中的数据。

对于读取顺序字节的文件中,指定为字符向量或字符串标量。指定machinefmt作为下表中的值之一。为ñUBITñ精度,machinefmt指定在字节内读取位的顺序,但读取字节的顺序仍然是系统字节的顺序。

'N'“本地”

您的系统字节顺序(默认)

“b”'IEEE-是'

大端排序

'L'“ieee-le”

小端排序

'S'“ieee-be.l64”

大端排序,64位长数据类型

“一个”“ieee-le.l64”

小端排序,64位长的数据类型

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

数据类型:烧焦|字符串

输出参数

全部收缩

文件数据,返回的列向量。如果您指定的sizeA参数,那么一种是指定大小的矩阵。数据一种是一流的类中指定的另一个类精确论点。

字符数读,返回一个标量值。

扩展功能

之前介绍过的R2006a