在MATLAB中如何获取文件大小?

35
什么是使用MATLAB确定文件大小的最佳方法?首先想到的是size(fread(fid))
7个回答

56

请查看上面提到的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:好观点。我忘了提到你也可以传递文件名。 - gnovice
如果文件在当前目录中,您可以直接使用 dir('try.c') 而不必担心路径。 - Dennis Jaheruddin

23

您可以使用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;

嘿,因为我的回答(8>3*2),你获得了一个徽章。;-) - Elazar Leibovich
1
很遗憾,不行。你的回答至少需要有10个赞,这意味着我的回答需要有20个赞。我认为在SO上对MATLAB感兴趣的人不够多,无法达到这样的数字。不过我们可以做梦... =) - gnovice

7

利用MatLab可以访问Java对象的特性:

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

总是工作比不总是给出答案的dir好。 - k4lls
1
我很好奇 dir 失败的地方,而这个成功了。到目前为止,我总是只用 dir 就能得到结果。 - Dennis Jaheruddin

5

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

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

或许目录名称随时间发生了变化,但是如果你的文件在当前目录下,你无需担心完整的目录名称。 - Dennis Jaheruddin

3
这个问题似乎表明使用了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的更多信息可在此处找到。


谢谢。(!) 我发现这非常有用,因为在我的代码中,我有一个打开的文件的fileID来处理,而不是文件路径。 - MarcinKonowalczyk

1
这段代码适用于任何文件和目录(无需绝对路径):
    dirInfo=dir(pwd);
    index = strcmp({dirInfo.name},[filename, '.ext']); % change the ext to proper extension 
    fileSize = dirInfo(index).bytes

也许dir随时间改变了,但如果您的文件在当前目录中,则无论如何都不需要担心完整名称。 - Dennis Jaheruddin

-2

查找文件大小的简便方法是: 输入以下命令

K=imfinfo('filename.formate');

size_of_file=K.FileSize

获取文件的大小。


2
通常似乎无法正常工作。看起来只设计用于处理图形文件。 - Dennis Jaheruddin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接