Как проверить, доступен ли файл только для чтения?

Кажется, ни у io, ни у lfs нет возможности проверить это. Мне нужно использовать эту функцию для имитации некоторого кода, который выполняет эту проверку.

1 ответ

Решение

Кажется, есть недокументированное permissions поле в таблице, возвращаемое lfs.attributes(), Спасибо siffiejoe за указание на это, я не видел его, когда я читал код.

Другой подход, конечно, заключается в попытке чтения из файла, который всегда будет работать, но может быть медленнее.

Вы также можете попробовать открыть файл и установить (временную, конечно) блокировку чтения на нем. Не уверен насчет переносимости блокировки файлов в Lua.

Примечание: проверка, является ли файл читаемым, а затем выполнение каких-либо действий может прерваться из-за состояния гонки; права доступа к файлу могут изменяться между вашей проверкой и следующим действием.

Другие вопросы по тегам