предоставляет информацию о файле
x = fileinfo(filesPaths) [x,ierr] = fileinfo(filesPaths)
вектор или матрица путей (в виде текста). Файлы могут быть любого типа: обычные файлы, директории (внутри собственные директории), ярлыки, символьные ссылки, и т.д.
матрицы или десятичные целые числа размером (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). |
указатель ошибки, 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) | ![]() | ![]() |
| Version | Description |
| 6.0.0 | Теперь могут быть обработаны несколько путей файлов. |