Этот модуль является частичным супермножеством LuaFileSystem 1.8.0 (http://keplerproject.github.io/luafilesystem/). Он был изменен для удаления функций, неприменимых к файловым системам macOS, и добавлены дополнительные функции, предоставляющие информацию о файловой системе, специфичную для macOS.
hs.fs.attributes(filepath [, aName]) -> table or string or nil,error
Тип
Функция
Описание
Получение атрибутов файла
Параметры
filepath - Строка, содержащая путь к файлу для проверки
aName - Необязательное имя атрибута. Если это значение указано, возвращается только запрошенный атрибут
Возвращаемые значения
Таблица с атрибутами файла, соответствующими filepath (или nil и сообщение об ошибке в случае ошибки). Если указан второй необязательный аргумент, возвращается строка со значением указанного атрибута. Режим атрибута — строка, все остальные — числа, а атрибуты, связанные со временем, используют ту же временную отметку, что и os.time:
dev - Число, содержащее устройство, на котором находится файл
ino - Число, содержащее индекс файла
mode - Строка, содержащая тип файла (возможные значения: файл, директория, ссылка, сокет, именованная труба, символьное устройство, блочное устройство или другое)
nlink - Число, содержащее количество жёстких ссылок на файл
gid - Число, содержащее идентификатор группы владельца
rdev - Число, содержащее тип устройства для файлов, являющихся символьных/блочных устройствами
access - Число, содержащее время последнего доступа к файлу (в секундах с момента эпохи Unix)
change - Число, содержащее время последнего изменения статуса файла (в секундах с момента эпохи Unix)
modification - Число, содержащее время последнего изменения содержимого файла (в секундах с момента эпохи Unix)
permissions - Строка из 9 символов, указывающая разрешения доступа пользователя к файлу. Первые три символа представляют разрешения Чтение/Запись/Исполнение для владельца файла. Первый символ будет "r", если пользователь имеет право на чтение, "-" если нет; второй — "w", если пользователь имеет право на запись, "-" если нет; третий — "x", если пользователь имеет право на выполнение, "-" если нет. Вторая группа из трёх символов следует той же соглашения, но относится к правам группы владельца на Чтение/Запись/Исполнение, а последние три символа следуют той же соглашения, но относятся к другим системным пользователям, не попадающим под поля Владелец или Группа.
creation - Число, содержащее время создания файла (в секундах с момента эпохи Unix)
size - Число, содержащее размер файла в байтах
blocks - Число, содержащее количество выделенных блоков для файла
blksize - Число, содержащее оптимальный размер блока ввода-вывода файловой системы
Примечания
Эта функция использует stat() во внутреннем использовании, поэтому если указанный путь является символической ссылкой, она следует за ней (если она указывает на другую ссылку, цепочка прослеживается рекурсивно), и информация относится к файлу, на который она ссылается. Чтобы получить информацию о самой ссылке, см. функцию hs.fs.symlinkAttributes()
Создает итератор для обхода пути в файловой системе
Параметры
path - Строка, содержащая директорию для итерации
Возвращаемые значения
Функция итератора
Объект данных, передаваемый функции итератора, или сообщение об ошибке в виде строки
nil в качестве начального аргумента для итератора (не используется и не требуется в этом случае, но соответствует спецификации Lua для итераторов). Игнорируйте это значение, если вы не используете эту функцию с for (см. Примечания).
Второй объект данных, используемый for для закрытия объекта директории сразу же при завершении цикла. Игнорируйте это значение, если вы не используете эту функцию с for (см. Примечания).
Примечания
В отличие от большинства функций в этом модуле, hs.fs.dir выдаст ошибку Lua, если предоставленный путь не может быть обработан итератором.
Самый простой способ использования этой функции — с циклом for. Когда используется таким образом, цикл for сам позаботится о закрытии потока директории, даже если мы выйдем из цикла раньше.
for file in hs.fs.dir("/Users/Guest/Documents") do
print(file)
end
Также возможно использовать dir_obj напрямую, если вы этого хотите:
local iterFn, dirObj = hs.fs.dir("/Users/Guest/Documents")
local file = dirObj:next() -- get the first file in the directory
while (file) do
print(file)
file = dirObj:next() -- get the next file in the directory
end
dirObj:close() -- necessary to make sure that the directory stream is closed
Возвращает эквивалентную форму fileUTI в альтернативном формате спецификации типа.
Параметры
строка, содержащая file UTI, например, возвращённую функцией hs.fs.fileUTI.
строка, определяющая альтернативный формат UTI. Эта строка может быть одной из следующих: * extension — как расширение файла, обычно используется для платформенно-независимого обмена файлами, когда метаданные файлов не гарантируют кросс-платформенную совместимость. Обычно считается ненадежным, когда доступны другие методы определения типа файла.
mime — как тип MIME, обычно используется интернет-приложениями, такими как веб-браузеры и почтовые приложения.
pasteboard — как тип NSPasteboard (см. hs.pasteboard).
ostype — четырёхсимвольный тип файла, наиболее распространённый до OS X, но всё ещё используется в некоторых устаревших API.
Возвращаемые значения
file UTI в альтернативном формате или nil, если UTI не имеет альтернативы указанного типа.
Получить комментарии Finder для файла или каталога по указанному пути
Parameters
path - путь к файлу или каталогу, комментарии которого требуется получить
Returns
строка, содержащая комментарии Finder для указанного файла или каталога. Если для файла не заданы комментарии, возвращает пустую строку. При возникновении ошибки, чаще всего при недопустимом пути, эта функция сгенерирует ошибку Lua.
Notes
Эта функция использует hs.osascript для доступа к комментариям файла через AppleScript
hs.fs.lockDir(path, [seconds_stale]) -> lock or (nil,error)
Type
Function
Description
Блокирует каталог
Parameters
path - строка, содержащая путь к каталогу
seconds_stale - необязательное число, содержащее возраст (в секундах) после которого существующую блокировку следует считать устаревшей. По умолчанию INT_MAX (что, грубо говоря, эквивалентно "никогда")
Returns
В случае успеха, объект блокировки, иначе nil и сообщение об ошибке
Notes
Это не функция низкого уровня ОС, блокировка фактически представляет собой файл, созданный в указанном пути, с именем lockfile.lfs, поэтому каталог должен быть доступен для записи, чтобы эта функция работала успешно
Возвращаемый объект блокировки можно освободить с помощью lock:free()
Если блокировка уже существует и не устарела, возвращённое сообщение об ошибке будет "Файл существует"
Получение пути к файлу из закодированной двоичной закладки.
Parameters
data - закодированная двоичная закладка.
Returns
строка, содержащая путь к URL закладки или nil при возникновении ошибки.
Сообщение об ошибке при возникновении ошибки.
Notes
Закладка предоставляет постоянную ссылку на ресурс файловой системы. При разрешении закладки вы получаете URL текущего расположения ресурса. Связь закладки с ресурсом файловой системы (обычно файлом или папкой) обычно сохраняется, если пользователь перемещает или переименовывает ресурс, или если пользователь перезапускает приложение или систему.
При разрешении данных закладки тома не монтируются.
hs.fs.symlinkAttributes (filepath [, aname]) -> table or string or nil,error
Type
Function
Description
Получение атрибутов символической ссылки
Parameters
filepath - строка, содержащая путь к ссылке для проверки
aName - необязательное имя атрибута. Если это значение указано, возвращается только запрошенный атрибут
Returns
таблица или строка, если значения найдены, в противном случае nil и сообщение об ошибке.
Notes
Значения возврата для этой функции идентичны тем, которые предоставляет hs.fs.attributes(), с добавлением: атрибута с именем "target", который определяет строку, содержащую абсолютный путь, к которому указывает символическая ссылка.