■52948 / inTopicNo.2) |
Re[1]: ファイルの拡張子を判定する方法について |
□投稿者/ よねKEN (593回)-(2010/08/30(Mon) 14:44:38)
|
2010/08/30(Mon) 14:54:28 編集(投稿者)
添付ファイルを一時ファイルか何かに書き出して本来のバイナリデータは取得できているものとしてお話します。
まず絶対的な判断基準というのはありません。100%の判定は不可能ですので、 どこまでの精度での判断を必要としているのかという辺りを明確にして、 自動判定のルール決めを行う必要があります。
> メールに添付されたファイルが圧縮ファイルなのか、テキストファイル、CSVファイル・・・なのかを判定したいのですが、 > ファイル名に付加されている拡張子以外に判定する材料がありますでしょうか。
★バイナリファイル 圧縮ファイルのバイナリデータの場合の多くでは、 ファイルの先頭の何バイトかがマジックナンバー になっていることが多いのでそれである程度は判断できます。
マジックナンバー (フォーマット識別子) http://ja.wikipedia.org/wiki/%E3%83%9E%E3%82%B8%E3%83%83%E3%82%AF%E3%83%8A%E3%83%B3%E3%83%90%E3%83%BC_(%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%83%E3%83%88%E8%AD%98%E5%88%A5%E5%AD%90)
★テキストファイル テキストデータはバイナリデータのうち、何らかの文字コードで構成されていると仮定したときに テキストととして人が読み取ることができるデータです。 一口にテキストといってもShift-JIS、EUC、Unicodeなど様々な文字コードの可能性があるため、 バイナリデータの可能性もある状況では自動的な判断は難しいと思います。 (圧縮ファイルかどうかの判断を行って、該当しなければテキストファイルであると仮定する、 などのルール決めが必要)
テキストデータであることが事前にわかっている場合であれば、文字コードの自動判定を行うことで判定できる可能性があります。 #IEなどのブラウザやテキストエディタなどで文字コードの自動判断があると思いますが、その技術です。
可能性のある文字コードが限定的であれば、すべての文字コードで処理したテキストを 人間の目でテキストと判断することなら可能でしょう。
★CSVファイル CSVファイルもテキストファイルの一部なので、CSVファイルとは何か?を恣意的(ここ重要)に決めれば判断は可能です。
たとえば、以下のテキストはCSVデータでしょうか、ただのテキストデータでしょうか? 「私は, りんごが好きです。」
|
|