Ищет и возвращает сведения об элементе в файловой системе; выполняет поиск в
каталоге
Если
item_spec содержит абсолютный путь, тогда первая
процедура ищет в файловой системе для элемента, который совпадает с именем
item_spec
и атрибутами, содержащимися в
attrib_mask. В противном
случае, он ищет относительно текущего каталога (см.
CurDir).
В любом случае если соответствующий элемент не найден, в
out_attrib
присваивается нуль и пустая строка возвращается. В противном случае, в
out_attrib
присваиваются флаги атрибута элемента, и возвращается имя элемента, без
пути.
item_spec может включать в себя звездочку (
*, для
сопоставления любому соседнему символу) или один или несколько знаков
вопроса (
?, для сопоставления любому индивидуальному символу). Если
это так, процедура ищет первый такой пункт. Если найдено, последующие вызовы
с
item_spec равным пустой строке, вернет следующий пункт,
соответствующий имени
item_spec до тех пор, пока есть
возможность найти такие пункты. Если
attrib_mask исключается
из последующих вызовов, процедура поиска для элементов происходит с теми же
атрибутами, как и в предыдущем вызове.
Вторая процедура ведет себя так же, как
Dir( item_spec, attrib_mask, *p_out_attrib ).
Третья процедура ведет себя так же, как
Dir( "", , out_attrib ).
Четвертая процедура действует так же, как
Dir( "", , *p_out_attrib ).
Атрибуты файла:
Файлы , каталоги и другие элементы, можно сказать, обладают так называемыми
атрибутами файла; метаданные, описывающие элемент. Смысл этих метаданных
зависит от операционной системы и файловой системы. Следующие макросы
используются как битовые флаги с
attrib_mask,
out_attrib
и
*p_out_attrib. Их значения могут быть объединенной маской,
с помощью
Оператора Or, или отдельные
значения, которые могут быть проверены с помощью
Оператора And. Для доступа к ним нужно
подключить
Include "dir.bi".
# define fbReadOnly &h01
Элемент нельзя записать или удалить.
DOS & Windows: Этот элемент имеет атрибут "только для чтения".
Linux:Элемент не имеет разрешения для записи для текущего пользователя
или группы, как и для глобальной записи. (Имеет или не имеет
пользователь права root,
игнорируется.)
# define fbHidden &h02
Элемент скрыт в обычных списках каталогов.
DOS & Windows: Элемент имеет атрибут "скрытый".
Linux: Имя элемента имеет период (.) как первый символ.
# define fbSystem &h04
Элемент используется почти исключительно в системе.
DOS & Windows: Элемент имеет атрибут «системный».
Linux: Элемент является либо символьным устройством, блочным устройством,
именем пайпа (FIFO) или Unix сокетом.
# define fbDirectory &h10
Элемент представляет собой каталог. Включает в себя
также текущий (.) и родительский (..)
каталоги.
DOS & Windows & Linux: Элемент представляет собой каталог.
# define fbArchive &h20
Элемент может быть использован для резервного
копирования после некоторых автоматизированных операций.
DOS & Windows: Элемент имеет атрибут «Архивный» (автоматически
устанавливается после каждой записи в файл).
Linux: Элемент не является каталогом; Типичные файловые системы не
поддерживают метаданные.
# define fbNormal (fbReadOnly or fbArchive)
Элемент доступен только для чтения или "архивации".
(Если
attrib_mask не включает
fbArchive,
тогда
Dir может расширить проверку , включив
fbDirectory,
но рекомендуется добавлять явно
fbDirectory , если данное
поведение нужно для поиска.)
Количество элементов, не имеющих атрибутов
, всегда
совпадают, независимо от значения
attrib_mask. Элемент не
будет соответствовать, если он имеет один или несколько атрибутов, не
указанных в
attrib_mask. Для примера,
fbArchive Or fbDirectory
будет соответствовать архивным файлам, архивным каталогам, не-архивным
файлам и не-архивным каталогам. Это не будет соответствовать например для
файлов "только для чтения".
В общем, не возможно использовать
attrib_mask чтобы включить
файл/папку с одним набором атрибутов, исключая файл/папку с другим набором.
К примеру не возможно сканировать каталоги только для чтения, исключая
файлы, доступные только для чтения (за исключением случаев, если файлы также
имеют другие атрибуты).
Более точного управления можно получить путем проверки значения
out_attrib
для нужного набора атрибутов.
См. также