如何在MATLAB中获得文件的大小?

时间:2009-05-11 19:48:14

标签: matlab file-io

使用MATLAB计算文件大小的最佳方法是什么?想到的第一个想法是size(fread(fid))

7 个答案:

答案 0 :(得分:55)

请参阅上述dir功能。

请注意,dir功能适用于文件,而不适用于目录。

>> s = dir('c:\try.c')

s = 

       name: 'try.c'
       date: '01-Feb-2008 10:45:43'
      bytes: 20
      isdir: 0
    datenum: 7.3344e+005

答案 1 :(得分:22)

您可以使用DIR函数获取目录信息,其中包括该目录中文件的大小。例如:

dirInfo = dir(dirName);  %# Where dirName is the directory name where the
                         %#   file is located
index = strcmp({dirInfo.name},fileName);  %# Where fileName is the name of
                                          %#   the file.
fileSize = dirInfo(index).bytes;  %# The size of the file, in bytes

或者,由于您只查找一个文件,您可以执行Elazar所述的操作,只需将文件的绝对或相对路径传递给DIR:

fileInfo = dir('I:\kpe\matlab\temp.m');
fileSize = fileInfo.bytes;

答案 2 :(得分:7)

使用MatLab可以访问Java Objects的事实:

myFile = java.io.File('filename_here')
flen = length(myFile)

答案 3 :(得分:5)

如果您不想在目录中进行硬编码,可以使用内置的pwd工具查找当前目录,然后将文件名添加到其中。见下面的例子:

FileInfo = dir([pwd,'\tempfile.dat'])
FileSize = FileInfo.bytes

答案 4 :(得分:2)

问题似乎表明使用了fopen / fread / ..在这种情况下,为什么不寻找到文件的末尾并阅读位置?

示例:

function file_length = get_file_length(fid)
% extracts file length in bytes from a file opened by fopen
% fid is file handle returned from fopen

% store current seek
current_seek = ftell(fid);
% move to end
fseek(fid, 0, 1);
% read end position
file_length = ftell(fid);
% move to previous position
fseek(fid, current_seek, -1);

end

Matlab可以提供一个捷径...

ftell的更多内容here

答案 5 :(得分:1)

此代码适用于任何文件和目录(不需要绝对路径):

    dirInfo=dir(pwd);
    index = strcmp({dirInfo.name},[filename, '.ext']); % change the ext to proper extension 
    fileSize = dirInfo(index).bytes

答案 6 :(得分:-1)

查找文件大小的简便方法是: 输入这些cammands

  
    

K = imfinfo( 'filename.formate');

         

size_of_file = K.FileSize

  

并获取文件大小。