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

如何在MATLAB中获得文件的大小?,matlab,file-io,Matlab,File Io,使用MATLAB计算文件大小的最佳方法是什么?首先想到的是size(fread(fid))使用MatLab可以访问Java对象的事实: myFile = java.io.File('filename_here') flen = length(myFile) 您可以使用该函数获取目录信息,其中包括该目录中文件的大小。例如: dirInfo = dir(dirName); %# Where dirName is the directory name where the

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

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

myFile = java.io.File('filename_here')
flen = length(myFile)
您可以使用该函数获取目录信息,其中包括该目录中文件的大小。例如:

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
或者,由于您只查找一个文件,您可以按照上面所说的操作,只需将文件的绝对或相对路径传递给DIR:

fileInfo = dir('I:\kpe\matlab\temp.m');
fileSize = fileInfo.bytes;
请参见上述功能

请注意,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

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

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

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


这个问题似乎表明,
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的更多信息。

查找文件大小的简单方法是: 输入这些命令

K=imfinfo('filename.formate')

大小\u of_file=K.FileSize


并获取文件的大小。

+1:这一点很好。我忘了提到你也可以传递文件名。如果文件在你当前的目录中,你可以使用
dir('try.c')
,而不用担心路径。嘿,你因为我的回答(8>3*2)赢得了一枚徽章;-)不幸的是,没有。你的答案必须至少有10票,这意味着我的答案必须有20票。我认为没有足够的人对MATLAB感兴趣,所以这些数字不会发生。但我们可以梦想…=)“总是工作”与“不总是给出答案的目录”相比。我很好奇地想知道
dir
在哪里失败,在哪里成功。到目前为止,我总是使用just
dir
得到一个结果。一般来说,它似乎不起作用。似乎仅适用于图形文件。可能dir随时间而更改,但如果文件位于当前目录中,则当前不必担心全名。可能dir随时间而更改,但如果文件位于当前目录中,则当前不必担心全名。谢谢。()我发现这非常有用,因为在我的代码中,我有一个要处理的打开文件的fileID,而不是文件路径。
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