MATLAB fopen()函数的用法(附带实例)
根据操作系统的要求,在程序要使用或创建一个磁盘文件时,必须向操作系统发出打开文件的命令,使用完毕后,还必须通知操作系统关闭这些文件。
文件可以以二进制形式或文本形式被打开(默认情况下是前者)。在二进制形式下,字符串不会被特殊对待。如果要求以文本形式打开,则在 permission 字符串后面加 t,如 rt+、wt+ 等。需要说明的是,在 UNIX 操作系统下,文本形式和二进制形式没有区别。
fID 是一个非负整数,称为文件标识,对文件进行的任意操作,都是通过这个文件标识值来传递的。MATLAB 通过这个值来标识已打开的文件,实现对文件的读/写和关闭等操作。
正常情况下,fopen() 应该返回一个非负整数,这个值是由操作系统设定的。如果返回的文件标识值为 -1,则表示 fopen() 函数无法打开该文件,原因可能是该文件不存在,也可能是用户无权限打开该文件。
在程序设计中,每次打开文件,都要进行打开操作是否正确的判定。如果要知道 fopen() 函数操作失败的原因,则可以使用下述实例中的方式。
【实例 1】以只读方式打开 tan()、sin()、cos() 函数和不存在的 sintan() 函数对应的文件。在命令行窗口中输入如下代码,并保存为 M 文件。
【实例 2】判断文件操作是否正确。在命令行窗口中输入如下代码,并保存为 M 文件。
【实例 3】用函数 fopen() 按只读的方式打开文件,但打开的文件不存在。在命令行窗口中输入如下代码,并保存为 M 文件。
【实例 4】打开与关闭文件。在命令行窗口中输入如下代码,并保存为 M 文件。
如果要一次性关闭所有已打开的文件,则需要执行下面的代码:
在某些情况下,可能需要用到临时文件夹及临时文件。要取用系统的临时文件夹,可用 tempdir 命令。
要打开一个临时文件,可用 tempname 命令:
MATLAB fopen()打开文件
在 MATLAB 中,使用函数 fopen() 来完成“打开文件”这一功能,其调用格式如下:fID=fopen('fName','permission')其中,fName 是要打开的文件名称;permission 表示要对文件进行处理的方式,可以是下列任一字符串:
- 'r': 只读文件(reading)。
- 'w': 只写文件,覆盖文件原有内容(如果文件名不存在,则生成新文件,writing)。
- 'a': 增补文件,在文件末尾增加数据(如果文件名不存在,则生成新文件,appending)。
- 'r+': 读/写文件(不生成文件,reading and writing)。
- 'w+': 创建一个新文件或删除已有文件内容,并可进行读/写操作。
- 'a+': 读取和增补文件(如果文件名不存在,则生成新文件)。
文件可以以二进制形式或文本形式被打开(默认情况下是前者)。在二进制形式下,字符串不会被特殊对待。如果要求以文本形式打开,则在 permission 字符串后面加 t,如 rt+、wt+ 等。需要说明的是,在 UNIX 操作系统下,文本形式和二进制形式没有区别。
fID 是一个非负整数,称为文件标识,对文件进行的任意操作,都是通过这个文件标识值来传递的。MATLAB 通过这个值来标识已打开的文件,实现对文件的读/写和关闭等操作。
正常情况下,fopen() 应该返回一个非负整数,这个值是由操作系统设定的。如果返回的文件标识值为 -1,则表示 fopen() 函数无法打开该文件,原因可能是该文件不存在,也可能是用户无权限打开该文件。
在程序设计中,每次打开文件,都要进行打开操作是否正确的判定。如果要知道 fopen() 函数操作失败的原因,则可以使用下述实例中的方式。
【实例 1】以只读方式打开 tan()、sin()、cos() 函数和不存在的 sintan() 函数对应的文件。在命令行窗口中输入如下代码,并保存为 M 文件。
[fID1,message1]=fopen('tan.m','r') [fID2,message2]=fopen('sin.m','r') [fID3,message3]=fopen('cos.m','r') [fID4,message4]=fopen('sintan.m','r')运行后,输出结果如下:
fID1 = 4 message1 = '' fID2 = 5 message2 = '' fID3 = 6 message3 = '' fID4 = -1 message4 = 'No such file or directory'为了后续操作的顺利进行,在程序设计中每次打开文件时,都要进行该操作是否正确的判断。
【实例 2】判断文件操作是否正确。在命令行窗口中输入如下代码,并保存为 M 文件。
[fID,msg]=fopen('fName','r'); if fID==-1 disp(msg); end
【实例 3】用函数 fopen() 按只读的方式打开文件,但打开的文件不存在。在命令行窗口中输入如下代码,并保存为 M 文件。
[fID,msg]=fopen('sintan.m','r') if fID==-1 disp(msg) end运行后,输出结果如下:
fid =
-1
message =
'没有这样的文件或目录'
MATLAB关闭文件
在进行完读/写操作后,必须关闭文件,以免打开文件过多,造成系统资源浪费。命令代码如下:status=fclose(fID)
【实例 4】打开与关闭文件。在命令行窗口中输入如下代码,并保存为 M 文件。
fID=fopen('cos.m','r') %打开文件 status=fclose(fID) %关闭文件运行后,输出结果如下:
fID =
13
status =
0
如果要一次性关闭所有已打开的文件,则需要执行下面的代码:
status=fclose('all')用户可以通过检查 status 的值来确认文件是否被关闭。
在某些情况下,可能需要用到临时文件夹及临时文件。要取用系统的临时文件夹,可用 tempdir 命令。
>> directory=tempdir directory = C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\
要打开一个临时文件,可用 tempname 命令:
>> fName=tempname fName = C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\tp145834 fID=fopen(fName, 'w');