Please note that the recommended version of Scilab is 2025.0.0. This page might be outdated.
See the recommended documentation of this function
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)
Смотрите также
История
Version | Description |
6.0.0 | Теперь могут быть обработаны несколько путей файлов. |
Report an issue | ||
<< deletefile | file_system | findfiles >> |