Ruby: How to determine if file being read is binary or text

前端 未结 3 1858
广开言路
广开言路 2021-02-06 08:42

I am writing a program in Ruby which will search for strings in text files within a directory - similar to Grep.

I don\'t want it to attempt to search in binary files bu

3条回答
  •  既然无缘
    2021-02-06 09:10

    An alternative to using the ruby-filemagic gem is to rely on the file command that ships with most Unix-like operating systems. I believe it uses the same libmagic library under the hood but you don't need the development files required to compile the ruby-filemagic gem. This is helpful if you're in an environment where it's a bit of work to install additional libraries (e.g. Heroku).

    According to man file, text files will usually contain the word text in their description:

    $ file Gemfile
    Gemfile: ASCII text
    

    You can run the file command through Ruby can capture the output:

    require "open3"
    
    def text_file?(filename)
      file_type, status = Open3.capture2e("file", filename)
      status.success? && file_type.include?("text")
    end
    

提交回复
热议问题