0

ユーザーフレンドリーなファイルの説明を取得するためのクロスプラットフォームの方法は何ですか?

例:

  1. foo.pdf -> 「Portable Document Format (PDF)」
  2. bar.doc -> 「Microsoft Word ドキュメント」

ライブラリまたは適切なシステム API へのポインタをいただければ幸いです。

Qt/C++ ソリューションが推奨されますが、何でも問題ありません。

ターゲット プラットフォームは Windows と Mac OS X です。可能であれば、Explorer や Finder で見つかるものと一致する説明を希望します (拡張機能のマップを自分で管理するよりも)。

4

2 に答える 2

1

GNU File コマンドは Linux と OSX に組み込まれており、Windows で使用できるバージョンがあります ( http://gnuwin32.sourceforge.net/packages/file.htm )。

File は、各引数を分類するために各引数をテストします。ファイルシステム テスト、マジック ナンバー テスト、言語テストの 3 つのテスト セットがこの順序で実行されます。成功した最初のテストにより、ファイルの種類が出力されます。印刷されるタイプには、通常、テキスト (ファイルには印刷文字といくつかの一般的な制御文字のみが含まれ、おそらく ASCII 端末で安全に読み取ることができます)、実行可能ファイル (ファイルにはプログラムをフォームにコンパイルした結果が含まれます) のいずれかが含まれます。一部の UNIX カーネルなどで理解できるもの)、またはその他の意味を持つデータ (通常、データは「バイナリ」または印刷不可) です。例外は、バイナリ データを含むことが知られている既知のファイル形式 (コア ファイル、tar アーカイブ) です。

QProcess を使用して file コマンドを呼び出し、返された情報を表示できます。

出力は次のようになります。

$ file document.pdf
document.pdf: PDF document, version 1.5
$ file test.txt
test.txt: ASCII text, with CRLF, CR, LF line terminators
于 2012-10-04T20:26:05.820 に答える
1

あなたがQtから抜け出すことができると私が思う最も近いものはQFileInfoです。

Windows は、Qt のQSettingsからアクセスできるレジストリを通じてマッピングを追跡します。しかし、簡単に調査しただけでは、Explorer のマッピングを模倣するのはちょっと難しいように思えます。

QDesktopServices::openUrl()を使用して、デフォルトのハンドラーでファイルを起動することもできます。

OSXがファイルタイプの説明情報を追跡する方法や場所については調査していません。

それが役立つことを願っています。

于 2012-10-04T20:02:17.887 に答える