我有一个以二进制格式保存的平面文件,我想寻找特定的字节并在该文件的末尾读取untile,所以我们需要一个条件,指示文件结束的条件是什么?
顺便说一下,我不想加载整个文件只是打开文件并寻找我需要的位置,然后读到文件的末尾......
答案 0 :(得分:3)
MATLAB的fread
函数(实际上,其他文件IO函数)将自动检测二进制文件的结尾;不需要特殊的文件结束标记。
答案 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)