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

Я пишу программу в Ruby, который будет искать строки в текстовых файлах в рамках каталога - подобный Grep.

Я не хочу, чтобы это попыталось искать в двоичных файлах, но я не могу найти, что путь в Ruby определяет, является ли файл двоичным или текст.

Программа должна работать и над Windows и над Linux.

Если бы кто-либо мог бы указать на меня в правильном направлении, которое было бы большим.

Спасибо,

Xanthalas

7
задан Xanthalas 1 March 2010 в 12:53
поделиться

2 ответа

gem install ptools
require 'ptools'
File.binary?(file)
4
ответ дан 6 December 2019 в 09:59
поделиться

libmagic - это библиотека, которая определяет типы файлов. Для этого решения я предполагаю, что все типы mimetype, начинающиеся с text / , представляют собой текстовые файлы. Все остальное - это двоичный файл. Это предположение не верно для всех типов mime (например, application / x-latex, application / json), но libmagic определяет их как text / plain.

require "filemagic"

def binary?(filename)
  begin
    fm= FileMagic.new(FileMagic::MAGIC_MIME)
    !(fm.file(filename)=~ /^text\//)
  ensure
    fm.close
  end
end
13
ответ дан 6 December 2019 в 09:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: