Scilab Home page | Wiki | Bug tracker | Forge | Mailing list archives | ATOMS | File exchange
Please login or create an account
Change language to: English - Français - Português - 日本語 -
Справка Scilab >> Файлы: функции ввода/вывода > fileinfo

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 — get date and time information
  • file — file management
  • dispfiles — выводит на экран свойства открытых файлов
  • newest — возвращает самый новый файл из набора файлов
  • isfile — проверяет является ли аргумент существующим файлом
  • isdir — проверяет является ли аргумент путём до директории

История

ВерсияОписание
6.0.0 Теперь могут быть обработаны несколько путей файлов.
Scilab Enterprises
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Thu Feb 14 15:05:03 CET 2019