C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: ファイルの拡張子を判定する方法について


(過去ログ 89 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■52947 / inTopicNo.1)  ファイルの拡張子を判定する方法について
  
□投稿者/ tama (10回)-(2010/08/30(Mon) 14:30:10)

分類:[.NET 全般] 

--- 開発環境 ---
VisualStudio2005
.NetFramework2.0
WindowsXP
----------------

お世話になります。
メールに添付されたファイルが圧縮ファイルなのか、テキストファイル、CSVファイル・・・なのかを判定したいのですが、
ファイル名に付加されている拡張子以外に判定する材料がありますでしょうか。
添付ファイルに付加されている拡張子はでたらめなものが付加されてきます。
ファイル自体に、その様な項目は持っていないのでしょうか。
初歩的な質問で申し訳ありませんが、宜しくお願い致します。



引用返信 編集キー/
■52948 / inTopicNo.2)  Re[1]: ファイルの拡張子を判定する方法について
□投稿者/ よねKEN (593回)-(2010/08/30(Mon) 14:44:38)
よねKEN さんの Web サイト
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データでしょうか、ただのテキストデータでしょうか?
「私は, りんごが好きです。」

引用返信 編集キー/
■52950 / inTopicNo.3)  Re[2]: ファイルの拡張子を判定する方法について
□投稿者/ tama (12回)-(2010/08/30(Mon) 15:30:29)
No52948 (よねKEN さん) に返信

 よねKEN 様

 はじめまして、詳細ご教授頂き有難うございます。
 圧縮ファイルにしても、その他のファイルにしても、これと言った決まりが無い状態です。
 その状態での判定は危険と警告頂いている認識ですので、
 今回は、解凍処理を行った上で、そのファイルが圧縮ファイルかどうかの判定を行う様に致します。
 
 有難うございました。


引用返信 編集キー/
■52952 / inTopicNo.4)  Re[3]: ファイルの拡張子を判定する方法について
□投稿者/ tama (14回)-(2010/08/30(Mon) 16:03:25)
解決済
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -