Techioz Blog

Rubyでファイルタイプを決定する

概要

ファイルの種類を確実に判断するにはどうすればよいでしょうか?ファイル拡張子の分析は受け入れられません。 UNIX の file(1) コマンドに似た Ruby ツールがあるはずです?

これは、ディレクトリ、ファイル、ソケットなどのファイル システムの分類ではなく、MIME またはコンテンツ タイプに関するものです。

解決策

必要なことを行う libmagic への Ruby バインディングがあります。これは、ruby-filemagic という名前の gem として入手できます。

gem install ruby-filemagic

libmagic-dev が必要です。

ドキュメントは少し薄いように見えますが、これで始めることができます。

$ irb 
irb(main):001:0> require 'filemagic' 
=> true
irb(main):002:0> fm = FileMagic.new
=> #<FileMagic:0x7fd4afb0>
irb(main):003:0> fm.file('foo.zip') 
=> "Zip archive data, at least v2.0 to extract"
irb(main):004:0>