Как получить файловый режим в ruby? - PullRequest
0 голосов
/ 14 октября 2018

Я новичок в рублевом файле ввода-вывода.У меня есть функция, которая принимает параметр File, и мне нужно убедиться, что файл находится в режиме только для чтения.

def myfunction(file)
    raise ArgumentError.new() unless file.kind_of?(File)

    #Assert that file is in read-only mode
end

Любая помощь будет признательна!

Ответы [ 3 ]

0 голосов
/ 14 октября 2018

Если вам не нужно выдавать ошибку, вы можете использовать reopen, я думаю, что-то вроде:

file = file.reopen(file.path, "r")

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

begin
  file.close_write
  # you could actually raise an exception here if you want
  # since getting here means the file was originally opened for writing
rescue IOError
  # This error will be raised if the file was not opened for
  # writing, so this is actually the path we want
end
0 голосов
/ 14 октября 2018

Вы можете использовать file.readable?, который возвращает true или false.

Пожалуйста, проверьте эту ссылку.

0 голосов
/ 14 октября 2018

Так что все, что вам нужно, это «убедитесь, что файл находится в режиме только для чтения», почему бы просто не установить его как доступный только для чтения с FileUtils.chmod .

Или еслина самом деле вы просто хотите проверить, доступен ли он только для чтения, используйте File.writeable?

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