web-dev-qa-db-ja.com

MATLABでファイルのサイズを取得するにはどうすればよいですか?

MATLABを使用してファイルのサイズを把握する最良の方法は何ですか?最初に思い浮かぶのは、size(fread(fid))です。

35
weiyin

上記の 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
55

[〜#〜] 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

または、1つのファイルのみを探しているので、 Elazar が言ったことを実行して、ファイルへの絶対パスまたは相対パスをDIRに渡すことができます。

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

MatLabがJavaオブジェクトにアクセスできるという事実を使用してください:

myFile = Java.io.File('filename_here')
flen = length(myFile)
7
KitsuneYMG

ディレクトリにハードコーディングしたくない場合は、組み込みのpwdツールを使用して現在のディレクトリを見つけ、そこにファイル名を追加できます。以下の例を参照してください。

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

質問は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 にあります。

2
Trilarion

このコードは、すべてのファイルとディレクトリで機能します(絶対パスは不要です)。

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