Quelle est la meilleure façon de déterminer la taille d'un fichier en utilisant MATLAB? La première idée qui me vient à l'esprit est size(fread(fid))
.Comment obtenez-vous la taille d'un fichier dans MATLAB?
Répondre
S'il vous plaît voir la fonction dir comme indiqué ci-dessus.
Veuillez noter que la fonction dir fonctionne sur les fichiers et pas uniquement 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
Utilisez le fait que MatLab a accès à des objets Java:
myFile = java.io.File('filename_here')
flen = length(myFile)
Toujours travailler comparer à dir qui ne donne pas toujours une réponse. – k4lls
Je suis curieux de voir où 'dir' échoue et cela réussit. Jusqu'à présent, j'ai toujours obtenu un résultat avec juste 'dir'. –
Vous pouvez utiliser la fonction DIR pour obtenir des informations de répertoire, qui comprend la taille 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, puisque vous êtes à la recherche d'un seul fichier, vous pouvez faire ce que Elazar dit et juste passer un chemin absolu ou par rapport à votre fichier DIR:
fileInfo = dir('I:\kpe\matlab\temp.m');
fileSize = fileInfo.bytes;
Hé, tu as gagné un badge à cause de ma réponse (8> 3 * 2). ;-) –
Malheureusement, non. Votre réponse devrait avoir au moins 10 upvotes, ce qui signifie que le mien devrait en avoir 20. Je ne pense pas qu'il y ait assez de gens sur SO qui sont intéressés par MATLAB pour ce genre de chiffres. Nous pouvons rêver si ... =) – gnovice
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 courant, puis ajoutez votre nom de fichier à lui. Voir exemple ci-dessous:
FileInfo = dir([pwd,'\tempfile.dat'])
FileSize = FileInfo.bytes
Peut-être que dir a changé au fil du temps, mais actuellement vous n'avez pas besoin de vous inquiéter du nom complet de toute façon si votre fichier se trouve dans le répertoire courant. –
Ce code fonctionne pour tout 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
Peut-être que dir a changé au fil du temps, mais actuellement vous n'avez pas besoin de vous inquiéter du nom complet de toute façon si votre fichier se trouve dans le répertoire courant. –
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 sur ftell
se trouvent here.
Merci. (!) J'ai trouvé cela très utile étant donné que dans mon code j'ai un fichier d'un fichier ouvert pour travailler avec, pas un chemin de fichier. – MarcinKonowalczyk
moyen facile de trouver la taille du fichier est: entrer ces cammands
K = imfinfo ('filename.formate');
size_of_file = K.FileSize
et obtenir la taille du fichier.
Ne semble pas fonctionner en général. Semble être conçu pour fonctionner avec des fichiers graphiques seulement. –
+1: Bon point. J'ai oublié de mentionner que vous pouvez également passer des noms de fichiers. – gnovice
Et si le fichier se trouve dans votre répertoire actuel, vous pouvez simplement utiliser 'dir ('try.c')' sans vous soucier du chemin. –