Как вы получаете размер файла в MATLAB?

30

Каков наилучший способ определить размер файла с помощью MATLAB? Первая мысль, которая приходит на ум, - это size(fread(fid)).

Теги:
file-io

7 ответов

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: хороший момент. Я забыл упомянуть, что вы также можете передавать имена файлов.
  • 0
    И если файл находится в вашем текущем каталоге, вы можете просто использовать dir('try.c') не беспокоясь о пути.
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;
  • 0
    Эй, вы заработали значок из-за моего ответа (8> 3 * 2). ;-)
  • 1
    К сожалению нет. В вашем ответе должно быть не менее 10 голосов, что означает, что у меня должно быть не менее 20. Я не думаю, что на SO достаточно людей, которые заинтересованы в MATLAB для того, чтобы такого рода цифры происходили. Мы можем мечтать, хотя ... =)
7

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

myFile = java.io.File('filename_here')
flen = length(myFile)
  • 0
    Всегда работайте по сравнению с директором, который не всегда дает ответ.
  • 1
    Мне любопытно посмотреть, где не работает dir и это удается. До сих пор я всегда получал результат только с dir .
5

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

FileInfo = dir([pwd,'\tempfile.dat'])
FileSize = FileInfo.bytes
  • 0
    Возможно, каталог изменился со временем, но в настоящее время вам не нужно беспокоиться о полном имени, если ваш файл находится в текущем каталоге.
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 можно найти здесь.

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

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

    dirInfo=dir(pwd);
    index = strcmp({dirInfo.name},[filename, '.ext']); % change the ext to proper extension 
    fileSize = dirInfo(index).bytes
  • 0
    Возможно, каталог изменился со временем, но в настоящее время вам не нужно беспокоиться о полном имени, если ваш файл находится в текущем каталоге.
-1

Простой способ найти размер файла: введите эти видеокамеры

К = imfinfo ( 'filename.formate');

     

size_of_file = K.FileSize

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

  • 2
    Не похоже на работу в целом. Кажется, предназначен для работы только с графическими файлами.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню