web-dev-qa-db-fra.com

Comment obtenir la taille d'un fichier dans MATLAB?

Quelle est la meilleure façon de déterminer la taille d'un fichier à l'aide de MATLAB? La première pensée qui vient à l'esprit est size(fread(fid)).

35
weiyin

Veuillez voir la fonction dir comme indiqué ci-dessus.

Veuillez noter que la fonction dir fonctionne uniquement sur les fichiers et non sur les répertoires.

>> 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
Elazar Leibovich

Vous pouvez utiliser la fonction DIR pour obtenir les informations du répertoire, qui incluent les tailles des fichiers dans ce répertoire. Par exemple:

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

Ou, comme vous ne recherchez qu'un seul fichier, vous pouvez faire ce que Elazar a dit et simplement passer un chemin absolu ou relatif à votre fichier vers DIR:

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

Utilisez le fait que MatLab a accès à Java Objects:

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

Si vous ne voulez pas coder en dur dans votre répertoire, vous pouvez utiliser l'outil intégré pwd pour trouver le répertoire actuel, puis y ajouter votre nom de fichier. Voir l'exemple ci-dessous:

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

La question semble indiquer que fopen/fread/.. est utilisé. Dans ce cas, pourquoi ne pas chercher à la fin du dossier et lire la position?

Exemple:

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 aurait pu fournir un raccourci ..

Plus d'informations sur ftell peuvent être trouvées ici .

2
Trilarion

Ce code fonctionne pour n'importe quel fichier et répertoire (pas besoin de chemin absolu):

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