在MATLAB中处理文件读写的函数有多个,像Load、Save命令能处理MATLAB本身创建的简单格式文件的读写;
而imread、imwrite命令可方便地读写一些常用图像格式文件;
但对一般化的文件读写,还是要靠Fread、Fwrite等低级文件I/O命令来处理。
成功关闭文件将返回0,失败将返回-1
模式 |
含义 |
'r' |
打开文件读 |
'r+' |
打开文件读写 |
'w' |
删除已存在的文件的内容或新建一文件,并打开文件写 |
'w+' |
删除已存在的文件的内容或新建一文件,并打开文件读写 |
'a' |
打开一个新文件或已有文件,在文件结尾处添加内容 |
'a+' |
打开一新文件或一已有文件读写,在文件结尾处添加内容 |
文件可以按文本格式打开,只要打开模式中带上字符t,此时,行分隔符在从文件读出时自动删除,写入文件时自动添加;
文件也可按二进制方式打开,只要打开模式中带上字符b,此时进行文件读写不会对分隔符进行处理。
成功打开文件后,返回的文件指针是一个非负整数,如打开失败,返回-1。
示例:
fid=fopen('mytest.mat','r')
[fid,message]=fopen('data.txt','rt')
1.读:[A,count]=fread(fid,size,precision,skip)
2.写:count=fwrite(fid,A,precision,skip)
3.示例
t=1:100;
fid1=fopen('test.mat','wb+');
count=fwrite(fid1,t,'int');
fclose(fid1);
fid2=fopen('test.mat','rb')
A1=fread(fid2,[5,4],'int')
A2=fread(fid2,5,'int',4)
status=fclose('all')
1.读:[A,count]=fscanf(fid,format,size)
2.写:count=fprintf(fid,format,A,…)
3.示例
t=1:5;
s1=sin(t);
s2=cos(t);
s=[t;s1;s2];
fid1=fopen('test.dat','wt');
fprintf(fid1,'\nThis is a Formated file\n');
fprintf(fid1,'\n%4d %+12.5E %+12.5E\n',s);
fclose(fid1);
fid2=fopen('test.dat','rt');
[A1,count1]=fscanf(fid2,'%s',5);
[A2,count2]=fscanf(fid2,'%4d %e %e',[3,inf]);
A2=A2';
fclose(fid2);
示例:
fid=fopen('d:\data.txt','r')
line1=fgetl(fid)
frewind(fid)
line2=fgets(fid)
fclose(fid)