Я пишу программу в Ruby, который будет искать строки в текстовых файлах в рамках каталога - подобный Grep.
Я не хочу, чтобы это попыталось искать в двоичных файлах, но я не могу найти, что путь в Ruby определяет, является ли файл двоичным или текст.
Программа должна работать и над Windows и над Linux.
Если бы кто-либо мог бы указать на меня в правильном направлении, которое было бы большим.
Спасибо,
Xanthalas
gem install ptools
require 'ptools'
File.binary?(file)
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