7

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

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

また、Windows では C#/.NET のみでお願いします。私は Linux を使用しておらず、Cygwin も使用できません (Windows CE では動作しないなどの理由があります)。

4

7 に答える 7

8

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

ファイル アナライザー http://www.softpedia.com/get/Programming/Other-Programming-Files/File-Analyzer.shtml

何のフォーマット http://www.jozy.nl/whatfmt.html

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

このウェブサイトはあなたに役立つかもしれません。 http://mark0.net/onlinetrid.aspx

注: 正しいツール名と情報を取得していることを確認するために、ダウンロード リンクを含めました。

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

私は過去にツールを使用したことがありますが、それは File Analyser だと思います。

ハッピーツーリング。

于 2008-11-25T21:31:13.690 に答える
6

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

于 2008-11-25T21:14:59.277 に答える
4

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

https://stackoverflow.com/questions/58510

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

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

于 2008-11-25T21:28:56.130 に答える
3

私が知っている最も簡単な方法は、 Cygwinを使用する Windows でも利用できるfileコマンドを使用することです。

于 2008-11-25T21:14:59.310 に答える
1

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

于 2008-11-25T21:15:00.917 に答える
1

これを行う最も簡単な方法は、「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# アプリケーションを作成できます (ファイル名として - を使用)。

于 2008-11-25T21:15:53.380 に答える
1

Win32 API からSHGetFileInfoメソッドを呼び出すには、いくつかの p/invoke 相互運用コードを使用する必要があります。この記事も役立つかもしれません。

于 2008-11-25T23:11:23.833 に答える