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

У меня есть метод, который получает строку. Может принимать путь к файлу или его содержимое.

Когда я передаю путь, он читает его и обрабатывает, все хорошо.

При передаче содержимого происходит сбой с string contains null byte, когда он проверяет, существует ли путь к файлу

Вот часть кода, которая проверяет, является ли переданный параметр файлом:

contents = File.exists?(param) ? File.read(param) : param

У меня вопрос: есть ли другой способ проверить, является ли param двоичным содержимым по сравнению с путем без File.exists?

1 Ответ

0 голосов
/ 05 сентября 2018

Вы можете проверить, содержит ли строка нулевые байты заранее:

contents = 
  case input
  when /\u0000/ then param
  when File.exists?(param) then File.read(param)
  else param
  end

Или, что еще проще, вернуться к параметру, если File#read не удалось:

contents = File.read(param) rescue param
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...