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,ierr] = fileinfo(files)

Аргументы

files

символьная строка или вектор-столбец строк, имя файла и путь до него

x

вектор целых чисел размером 13 элементов, содержащий информацию, либо пустую матрицу, если файла не существует.

Если files является вектор-столбцом строк, то x будет матрицей размером m x 13.

Если файла с указанным именем не существует, то в качестве выходной информации будет возвращена строка из 13 элементов и в каждом элементе Nan.

ierr

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

Описание

x = fileinfo(file) возвращает:

x(1)

Размер файла

x(2)

Режимный код файла (десятичное значение)

x(3)

Идентификатор пользователя

x(4)

Идентификатор группы

x(5)

Номер устройства

x(6)

Дата последнего изменения данных

x(7)

Дата последнего изменения статуса файла

x(8)

Дата последнего доступа

x(9)

Тип устройства (если инодное устройство)

x(10)

Размер блока для ввода/вывода файловой системы (в Windows всегда 0)

x(11)

Количество распределённых блоков (в Windows всегда 0)

x(12)

Индексный дескриптор

x(13)

Количество жёстких ссылок

Ссылки

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

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

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

So, to check permissions, it is necessary to use masks. Let us take an example: In octal, x(2)=1664, so first digit corresponds to sticky attributes. The second indicates that file owner has permission of writing and reading. It is the same for other users in the file's group. Finally, others users has just right to read. To apply a mask, it is simpler to look at this octal in binary. So: x(2)= 1 110 110 100. To check if the owner has write permission, we must take a look at the second triplet: 110 and compare it with write permission 010. So, the operation is: 110 000 000 & 010 000 000. If result is not null (it is the case here), owner has write permission.

Примеры

w = fileinfo(SCI+'/etc/scilab.start')
// права на файл
dec2oct(w(2))
// дата файла
getdate(w(6))

// Проверка прав на запись
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 — возвращает самый новый файл из набора файлов
  • isdir — проверяет является ли аргумент путём до директории
Scilab Enterprises
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Tue Feb 14 15:13:25 CET 2017