首页 > 编程笔记 > MATLAB笔记 阅读:23

MATLAB fopen()函数的用法(附带实例)

根据操作系统的要求,在程序要使用或创建一个磁盘文件时,必须向操作系统发出打开文件的命令,使用完毕后,还必须通知操作系统关闭这些文件。

MATLAB fopen()打开文件

在 MATLAB 中,使用函数 fopen() 来完成“打开文件”这一功能,其调用格式如下:
fID=fopen('fName','permission')
其中,fName 是要打开的文件名称;permission 表示要对文件进行处理的方式,可以是下列任一字符串:
文件可以以二进制形式或文本形式被打开(默认情况下是前者)。在二进制形式下,字符串不会被特殊对待。如果要求以文本形式打开,则在 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

上述命令关闭了文件标识为 fID 的文件。

如果要一次性关闭所有已打开的文件,则需要执行下面的代码:
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');

相关文章