fileinfo предоставляет информацию о файле

## Синтаксис

                 x = fileinfo(filesPaths)
                [x,ierr] = fileinfo(filesPaths)

## Аргументы

filesPaths

  вектор или матрица путей (в виде текста). Файлы могут быть любого типа: обычные файлы, директории (внутри собственные директории), ярлыки, символьные ссылки, и т.д.

x

  матрицы или десятичные целые числа размером (m,13), где m: число указанных путей файлов. Строка №i возвращает информацию о файле `filesPaths(i)`.

  Если запрошен единственный путь, а файла не существует, то `x` возвращается в виде [].

  Если запрошено несколько файлов: когда файла среди них не существует, то функция возвращает `x`, в котором строка заполнена значениями `Nan`.

  столбец x | Описание
  --- | ---
  1 : | фактический размер файла (байты). 0 для директории.
  2 : | права файла (см. описание)
  3 : | идентификатор собственника файла (всегда 0 в Windows)
  4 : | идентификатор группы файла (всегда 0 в Windows)
  5 : | номер устройства
  6 : | временная метка UNIX последней модификации данных. `getdate(x(:,6))(:,[1 2 6 7 8 9])` возвращает соответствующую дату в виде матрицы из числовых строк [год месяц день час мин сек].
  7 : | временная метка UNIX последнего изменения статуса файла.
  8 : | временная метка UNIX последнего доступа к файлу.
  9 : | Тип устройства (если узловое устройство).
  10 : | Размер блока файловой системы ввода-вывода (всегда 0 в Windows)
  11 : | Количество блоков распределённых по этому хранилищу файлов (всегда 0 в Windows)
  12 : | индексный дескриптор файла (уникальный идентификатор) (всегда 0 в Windows)
  13 : | Количество жёстких ссылок, указывающих на этот файл (всегда 1 в Windows).

ierr

  указатель ошибки, 0, если ошибки не произошло.

## Описание

Эта функция является интерфейсом к C-функции `stat`.

Права обычно определяются в виде восьмеричных чисел: используйте для преобразования `dec2oct(x(2))`.

Числовой режим представляет собой от одной до четырёх восьмеричных цифр (0-7), полученных добавлением битов со значениями 4, 2 и 1. Любые опущенные цифры предполагаются предварёнными нулями. Первая цифра выбирает набор атрибутов идентификатора пользователя (4), группы пользователя (2) и sticky-бита (1). Вторая цифра выбирает права пользователя, который владеет файлом: чтение (4), запись (2) и исполнение (1); третье число выбирает права для других пользователей в группе файлов с теми же самыми значениями.

Таким образом, чтобы проверить права, необходимо использовать маски. Например, в восьмеричной системе `x``(2)=1664`, таким образом первый элемент соответствует атрибуту sticky-бита (защита от удаления и переименования). Второй указывает на то, что владелец файла имеет право на запись и чтение. То же самое и для других пользователей в группе файла. Наконец, другие пользователи имеют право лишь на чтение. Использовать маску проще, чем смотреть на эти восьмеричные коды в двоичном виде. Таким образом: `x``(2)= 1 110 110 100`. Чтобы проверить имеет ли пользователь право на запись, нужно посмотреть на вторую тройку: `110` и сравнить её с правом на запись `010`. Таким образом, операция заключается в `110 000 000` & `010 000 000`. Если результат отличен от нуля (как в данном случае), то пользователь имеет право на запись.

## Примеры

    w = fileinfo(SCI+'/etc/scilab.start')
    // права на файл
    dec2oct(w(2))
    // дата файла : [год месяц день час мин сек .сек]
    getdate(w(6))(:,[1 2 6:10])
    // Проверка прав на запись
    w = fileinfo(SCI+'/etc/scilab.start')
    S_IWRITE = 128; // маска прав на запись
    S_IEXEC = 64; // маска прав на исполнение
    S_IREAD = 256; // маска прав на чтение
    S_IFCHR = 8192; // маска прав директории
    if ( bitand( w(2), S_IWRITE ) <> 0) then
     disp('Для этого файла есть ПРАВО НА ЗАПИСЬ.');
    else
     disp('Для этого файла НЕТ ПРАВА НА ЗАПИСЬ.');
    end
    FILES = [SCI;SCIHOME;'несуществующий_файл';TMPDIR]
    [X,ERRS] = fileinfo(FILES)

## Смотрите также

- getdate
- file
- dispfiles
- newest
- isfile
- isdir

## История

6.0.0 Теперь могут быть обработаны несколько путей файлов.