Файловые функции

b=mf.fattr(S)

Возвращает файловые атрибуты файла/папки S:

0x00000001
FILE_ATTRIBUTE_READONLY. Файл только для чтения.
Приложения могут читать такой файл, но не могут записывать или удалять его.
0x00000002
FILE_ATTRIBUTE_HIDDEN. Файл скрыт.
Такой файл не включается в обычный листинг папки.
0x00000004
FILE_ATTRIBUTE_SYSTEM. Этот файл — часть операционной системы.
0x00000010
FILE_ATTRIBUTE_DIRECTORY. Это папка.
0x00000020
FILE_ATTRIBUTE_ARCHIVE. Это архивный файл.
Приложения должны использовать этот флаг для копирования, архивирования или удаления.
0x00000080
FILE_ATTRIBUTE_NORMAL. У этого файла не установлены другие атрибуты.
Это значение корректно только при использовании без остальных флагов.
0x00000100
FILE_ATTRIBUTE_TEMPORARY. Это временный файл.
Приложения должны записывать в такой файл только в крайней необходимости. Большая часть данных файла находится в памяти и не сбрасывается на диск, так как файл будет удалён.
0x00000200
FILE_ATTRIBUTE_SPARSE_FILE. Файл является разрежённым.
0x00000400
FILE_ATTRIBUTE_REPARSE_POINT. Папка является точкой повторной обработки.
0x00000800
FILE_ATTRIBUTE_COMPRESSED. Файл или папка сжаты.
Для файла это означает, что все данные его сжаты, для папки — что компрессия по умолчанию применяется ко всем её файлам и подпапкам.
0x00001000
FILE_ATTRIBUTE_OFFLINE. Данные файла не доступны непосредственно.
Означает, что реальные данные файла были физически перемещены на устройства хранения.
0x00002000
FILE_ATTRIBUTE_NOT_CONTENT_INDEXED.
Этот файл или папки не будут индексироваться службой индексирования.
0x00004000
FILE_ATTRIBUTE_ENCRYPTED. Файл или папка зашифрованы.
Для файла это означает, что все данные в файле зашифрованы. Для папки это означает, что шифрование является умолчанием для вновь созданных файлов и подпапок.
0x00010000
FILE_ATTRIBUTE_VIRTUAL. Этот файл — виртуальный файл.

Если файловый объект не существует, функция возвращает -1.

В параметре S допускается использование символов масок ‘*’ и ‘?’. В этом случае функция возвращает атрибуты для первого найденного файла/папки.

В отличие от Panel.FAttr(), функция не работает с панелями.

B=mf.fexist(S)

Проверяет существование файла/папки S (возвращает true или false).

В параметр S допускается использование символов ‘*’ и ‘?’. В этом случае функция проверяет только первое вхождение файла/папки.

В отличие от Panel.FExist(), функция не работает с панелями.

N=mf.fmatch(S,Mask)

Тестирует строку S на соответствие маске Mask.

Mask может быть:

  • маской
  • списком масок (разделённых запятой или точкой с запятой)
  • маской исключения — одной или несколькими масками файлов, которой не должна соответствовать строка S. Маска исключения отделяется от основной маски символом ‘|
  • регулярным выражением. Текст регулярного выражения должен быть окружён символами ‘/

Возвращает:

1
строка соответствует маске
0
строка не соответствует маске
-1
ошибка в регулярном выражении

Примеры

mf.fmatch("Readme.txt", "*.txt")
возвращает 1
mf.fmatch("Readme.txt", "Readme.*|*.txt")
возвращает 0
mf.fmatch([[c:\Readme.txt]], [[/txt$/i]])
возвращает 1
mf.fmatch([[c:\Readme.txt]], [[/txt$]])
возвращает -1
S=mf.fsplit(path,Flags)

Разбивает путь path на компоненты и возвращает их комбинацию, в зависимости от набора флагов Flags:

0x00000001

Текущий диск в формате “C:”.

Для сетевых папок — “\\server\share

0x00000002
Путь в формате “\Program Files\Far\
0x00000004
Имя
0x00000008
Расширение в формате “.EXT” или пусто, если расширения нет.
N=mf.testfolder(S)

Тестирует папку S.

Возвращает:

2
папка не пустая
1
папка пустая
0
папка не существует
-1
нет доступа
-2
ошибка (некорректный параметр или внутренние проблемы с выделением памяти)

Если > 0 — существует и доступна

Если = 0 — не существует, но можно попробовать создать

Если < 0 — ничего обнадёживающего функция не сообщает