4

有没有办法在不将文件加载到工作区的情况下计算出 .dat 文件的长度(以行为单位)?

4

3 回答 3

18

行计数器——每行只加载一个字符:

Nrows = numel(textread('mydata.txt','%1c%*[^\n]'))

或文件长度(Matlab):

datfileh = fopen(fullfile(path, filename));
fseek(datfileh, 0,'eof');
filelength = ftell(datfileh);
fclose(datfileh);
于 2011-08-25T17:53:05.750 回答
12

我假设您正在使用文本文件,因为您提到了查找行数。这是一个解决方案:

fid = fopen('your_file.dat','rt');
nLines = 0;
while (fgets(fid) ~= -1),
  nLines = nLines+1;
end
fclose(fid);

这使用FGETS读取每一行,计算它读取的行数。请注意,文件中的数据永远不会保存到工作区,它只是用于 while 循环的条件检查。

于 2009-06-03T14:48:40.270 回答
3

还值得记住的是,您可以使用文件系统的内置命令,因此在 linux 上您可以使用该命令

[s,w] = system('wc -l your_file.dat');

然后从返回的文本中获取行数(存储在 中w)。(我认为 Windows 下没有等效的命令。)

于 2009-06-07T14:14:17.003 回答