ファイルの拡張子を知らなくてもファイルのタイプを判別する簡単な方法はありますか?

StackOverflow https://stackoverflow.com/questions/318880

質問

さまざまな種類のファイル(PDF、BMP、JPEG、WAV、MP3、DOC、MPEG、AVIなど)のファイルを格納するバイナリ列を持つテーブルがありますが、名前または元のファイルのタイプ。これらの行を処理し、バイナリ列に格納されている各ファイルのタイプを判断する簡単な方法はありますか?ファイルヘッダーのみを読み取るユーティリティであることが望ましいため、各ファイルを完全に抽出してその種類を判断する必要はありません。

明確化:ここでのアプローチには、各ファイルの先頭のみを読み取ることが含まれます。私はあまりにも大騒ぎせずにこれを行うことができる良いリソース(別名リンク)を探しています。ありがとう。

また、 Windows上のC#/。NETのみ。私はLinuxを使用しておらず、Cygwinを使用できません(他の理由の中でも、Windows CEでは動作しません)。

役に立ちましたか?

解決

これらのツールを使用してファイル形式を見つけることができます。

ファイルアナライザー http://www.softpedia.com/get/プログラミング/その他のプログラミングファイル/File-Analyzer.shtml

形式 http://www.jozy.nl/whatfmt.html

PEファイル形式アナライザー http://peid.has.it/

このWebサイトは役に立つかもしれません。 http://mark0.net/onlinetrid.aspx

注: 正しいツール名と情報を確実に取得できるように、ダウンロードリンクを含めました。

ダウンロードする前にソースを確認してください。

私は過去にツールを使用しましたが、ファイルアナライザーであると思います。これは最も近い一致を示します。

ハッピーツーリング。

他のヒント

これは完全な答えではありませんが、開始する場所は「マジックナンバー」です。としょうかん。これは、ファイルの最初の数バイトを調べて「マジックナンバー」を決定し、既知のリストと比較します。これは、Linuxシステムでの file コマンドの動作の(少なくとも一部)です。

他の誰かが同様の質問をし、まさにこれを行うために使用されるコードを投稿しました。ここに投稿されたものを取得し、データベースからプルするようにわずかに変更できるはずです。

https://stackoverflow.com/questions/58510

それに加えて、誰かがこれを行うためにマジックナンバーに基づいてライブラリを作成したように見えますが、このライブラリをダウンロードするには、サイトでの登録と何らかの代替アクセスが必要です。ドキュメントは登録なしで無料で利用できます。これは役に立つかもしれません。

http://software.topcoder.com/catalog/c_component .jsp?comp = 13249160& ver = 2

最も簡単な方法は、 file コマンドを使用することです。 Cygwin を使用してWindowsで使用できます。

多くのファイルタイプには、ファイルを開始するヘッダーが明確に定義されています。最初の数バイトをチェックして、ファイルの開始方法を確認できます。

これを行う最も簡単な方法は、「file」コマンドを持つ* nix(またはcygwin)システムにアクセスすることです。

$ file visitors.*
visitors.html: HTML document text
visitors.png:  PNG image data, 5360 x 2819, 8-bit colormap, non-interlaced

各バイナリ列の最初のXバイトをファイルコマンドにパイプするC#アプリケーションを作成できます(ファイル名として-を使用)

SHGetFileInfo メソッド。この記事も役立つ場合があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top