У меня есть текстовый файл, например. Каков наилучший способ проверить в Ruby, что файл пуст?
File.size('test.rb') == 0
выглядит уродливо.
Как проверить, что файл пуст?
Ответ 1
Вы можете использовать метод zero?
:
File.zero?("test.rb")
Ответ 2
File.size?('test.rb')
оценивается как nil
если файл пуст or
он не существует. File.zero?('test.rb')
вернет true, если файл пуст, но вернет false, если файл не найден. В зависимости от ваших конкретных потребностей вы должны быть осторожны, чтобы использовать правильный метод.
В качестве примера в вопросе создателя темы они специально задали вопрос: "Как лучше всего проверить в Ruby, что файл пуст?" Принятый ответ делает это правильно и выдаст сообщение об ошибке No such file or directory
если файл не существует.
В некоторых ситуациях мы можем считать отсутствие файла "эквивалентным" пустому файлу.
Ответ 3
Лучший способ - не проверять вообще, а перебирать каждую строку и делать материал для каждой итерации. 0 строк = 0 итераций = не требуется дополнительный код.
Ответ 4
Как и Ruby 2.4.0, есть File.empty?.
(Обратите внимание, что он всегда возвращает false
, если вы передаете ему каталог, является ли этот каталог пустым или нет: File.empty?('/') # => false
. Поэтому используйте Dir вместо этого вместо этого вместо этого указывается пустое? или Pathname # empty?, который работает как для файлов, так и для каталогов.)
Ответ 5
Лично мне нравится проверять так:
File.read('test.json').empty?
Сначала прочитайте файл, а затем проверьте, не содержит ли он что-либо, мне кажется самым ясным.