如何在matlab中指示文件的结尾

时间:2011-10-26 12:38:01

标签: matlab file-io binaryfiles

我有一个以二进制格式保存的平面文件,我想寻找特定的字节并在该文件的末尾读取untile,所以我们需要一个条件,指示文件结束的条件是什么?

顺便说一下,我不想加载整个文件只是打开文件并寻找我需要的位置,然后读到文件的末尾......

3 个答案:

答案 0 :(得分:3)

MATLAB的fread函数(实际上,其他文件IO函数)将自动检测二进制文件的结尾;不需要特殊的文件结束标记。

fread documentation

General MATLAB IO documentation

答案 1 :(得分:1)

您可以使用feof来测试文件的结尾。例如,要一次读取一个文件:

fid = fopen('bench.dat');

k = 0;
while ~feof(fid)
    curr = fscanf(fid,'%c',1);
    if ~isempty(curr)
       k = k+1;
       benchstr(k) = curr;
    end
end

fclose(fid);

答案 2 :(得分:1)

使用FREAD函数时,您可以传递Inf作为size参数(将读取到文件末尾)。这是一个例子:

%# first lets create a simple binary file
fid = fopen('file.bin', 'wb');
fwrite(fid, 'hello world', 'char*1');
fclose(fid);

%# now open binary file, seek to some position, and read bytes till EOF
fid = fopen('file.bin', 'rb');
fseek(fid, 6, 'bof');                %# go to the 7th byte
B = fread(fid, Inf, 'uint8=>char');  %# read bytes until end-of-file (as chars)
fclose(fid);

disp(B)