Подтвердить что ты не робот

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

У меня есть текстовый файл, например. Каков наилучший способ проверить в Ruby, что файл пуст? File.size('test.rb') == 0 выглядит уродливо.

4b9b3361

Ответ 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?

Сначала прочитайте файл, а затем проверьте, не содержит ли он что-либо, мне кажется самым ясным.