2009-05-11 3 views

ответ

52

Пожалуйста, см функция 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 
+0

+1: Хорошая точка. Я забыл упомянуть, что вы также можете передавать имена файлов. – gnovice

+0

И если файл находится в вашем текущем каталоге, вы можете просто использовать 'dir ('try.c')', не беспокоясь о пути. –

7

Используйте тот факт, что MatLab имеет доступ к Java Objects:

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

Всегда работайте по сравнению с dir, который не всегда дает ответ. – k4lls

+1

Мне любопытно узнать, где 'dir' терпит неудачу, и это удается. До сих пор я всегда получал результат только с 'dir'. –

22

Вы можете использовать функцию 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; 
+0

Эй, ты заработал значок из-за моего ответа (8> 3 * 2). ;-) –

+0

К сожалению, нет. Ваш ответ должен иметь как минимум 10 приоритетов, а это значит, что у меня должно было быть 20. Я не думаю, что на SO есть достаточно людей, которые заинтересованы в MATLAB для подобных видов. Мы можем мечтать, хотя ... =) – gnovice

5

Если вы не хотите, чтобы жёстко в каталоге, вы можете использовать встроенный в PWD инструмент, чтобы найти текущий каталог, а затем добавить имя файла к нему. Смотрите пример ниже:

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

Возможно, dir изменился со временем, но в настоящее время вам не нужно беспокоиться о полном имени, если ваш файл находится в текущем каталоге. –

1

Этот код работает для любого файла и директории (нет необходимости абсолютного пути):

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

Возможно, dir изменился со временем, но в настоящее время вам не нужно беспокоиться о полном имени, если ваш файл находится в текущем каталоге. –

1

Вопрос, кажется, указывает, что 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.

+0

Спасибо. (!) Я нашел это очень полезным, учитывая, что в моем коде у меня есть fileID открытого файла для работы, а не путь к файлу. – MarcinKonowalczyk

-1

Легкий способ найти размер файла: ввести эти cammands

K = imfinfo ('filename.formate');

size_of_file = K.FileSize

и получить размер файла.

+1

Как представляется, не работает вообще. Кажется, он предназначен для работы только с графическими файлами. –

Смежные вопросы