MATLAB fopen()函数:打开文件(附带实例)
MATLAB 程序中对文件进行操作,无论是要读写 ASCII 码文件还是二进制文件,都必须先将其打开。
在 MATLAB 中,默认情况下,fopen() 函数用于打开文件(以二进制格式打开文件)或获得有关打开文件的信息,它的调用格式及说明如下表所示。
这里需要强调的是,如果 fopen() 无法打开文件,则 fileID 为 -1。
如果要以文本格式打开文件,需要注意下面几点:
如果不指定编码方案,fopen() 将使用系统的默认编码方案打开文件并进行处理。在 MATLAB 中写入文件,则以文本模式打开或创建新文件,然后在记事本或不会将 \n 识别为换行符序列的任意文本编辑器中打开该文件。写入文件时,用 \r\n 结束每行。
默认情况下,对新建的文件使用 little-endian 排序方式进行排序,现有二进制文件可以使用 big-endian 或 little-endian 排序方式。
【实例】在当前路径下创建文件夹并关闭。MATLAB 程序如下:
在 MATLAB 中,默认情况下,fopen() 函数用于打开文件(以二进制格式打开文件)或获得有关打开文件的信息,它的调用格式及说明如下表所示。
调用格式 | 说明 |
---|---|
fileID = fopen(filename) | 打开文件名为 filename 的文件,以二进制读取形式进行访问,并返回等于或大于 3 的整数文件标识符。MATLAB 保留文件标识符 0、1 和 2 分别用于标准输入、标准输出(屏幕)和标准错误 |
fileID = fopen(filename,permission) | permission 指定访问类型的文件,如表 11-18 所示 |
fileID = fopen(filename,permission, machinefmt, encodingIn) | 使用 machinefmt 参数另外指定在文件中读写字节或位时的顺序,如表 11-19 所示。可选的 encodingIn 参数指定与文件相关联的字符编码方案,如表 11-20 所示 |
[fileID,errmsg] = fopen('...') | 如果 fopen 打开文件失败,返回一条因系统而异的错误消息;否则,返回空字符串向量 errmsg |
fIDs = fopen('all') | 返回包含所有打开文件的文件标识符的行向量。向量中元素的数量等于打开文件的数量 |
filename = fopen(fileID) | 返回上一次调用 fopen 在打开 fileID 指定的文件时所使用的文件名。输出文件名将解析到完整路径 |
[filename,permission,machinefmt, encodingOut] = fopen(fileID) | 返回上一次调用 fopen 在打开指定文件时所使用的权限、计算机格式以及编码。如果是以二进制格式打开的文件,则 permission 会包含字母 b。encodingOut 输出是一个标准编码方案名称 |
这里需要强调的是,如果 fopen() 无法打开文件,则 fileID 为 -1。
符号变量 | 说明 |
---|---|
r | 打开要读取的文件 |
w | 打开或创建要写入的新文件。放弃现有内容(如果有) |
a | 打开或创建要写入的新文件。追加数据到文件末尾 |
r+ | 打开要读写的文件 |
w+ | 打开或创建要读写的新文件。放弃现有内容(如果有) |
a+ | 打开或创建要读写的新文件。追加数据到文件末尾 |
A | 打开文件以追加(但不自动刷新)当前输出缓冲区 |
W | 打开文件以写入(但不自动刷新)当前输出缓冲区 |
如果要以文本格式打开文件,需要注意下面几点:
- 将字母 t 附加到 permission 参数,例如 rt 或 wt+。
- 读取操作如果遇到回车符后加换行符(\r\n),则会从输入中删除回车符。
- 写入操作在输出中的任何换行符之前插入一个回车符。
如果不指定编码方案,fopen() 将使用系统的默认编码方案打开文件并进行处理。在 MATLAB 中写入文件,则以文本模式打开或创建新文件,然后在记事本或不会将 \n 识别为换行符序列的任意文本编辑器中打开该文件。写入文件时,用 \r\n 结束每行。
符号变量 | 说明 |
---|---|
n 或 native | 系统字节排序方式(默认) |
b 或 ieee-be | Big-endian 排序 |
l 或 ieee-le | Little-endian 排序 |
s 或 ieee-be,164 | Big-endian 排序,64 位长数据类型 |
a 或 ieee-le,164 | Little-endian 排序,64 位长数据类型 |
默认情况下,对新建的文件使用 little-endian 排序方式进行排序,现有二进制文件可以使用 big-endian 或 little-endian 排序方式。
符号变量 | 说明 | 适用范围 |
---|---|---|
Big5 | ISO-8859-1 | windows-874 |
Big5-HKSCS | ISO-8859-2 | windows-949 |
CP949 | ISO-8859-3 | windows-1250 |
EUC-KR | ISO-8859-4 | windows-1251 |
EUC-JP | ISO-8859-5 | windows-1252 |
EUC-TW | ISO-8859-6 | windows-1253 |
GB18030 | ISO-8859-7 | windows-1254 |
GB2312 | ISO-8859-8 | windows-1255 |
GBK | ISO-8859-9 | windows-1256 |
IBM866 | ISO-8859-11 | windows-1257 |
KOI8-R | ISO-8859-13 | windows-1258 |
KOI8-U | ISO-8859-15 | US-ASCII |
Macintosh | UTF-8 | |
Shift_JIS |
【实例】在当前路径下创建文件夹并关闭。MATLAB 程序如下:
>> close all % 关闭当前已打开的文件 >> clear % 清除工作区的变量 >> fileID = fopen('mytxt.txt','w'); % 创建并打开新文件mytxt.txt >> fclose(fileID); % 关闭该文件