パスまたはファイル名から拡張子を抽出するにはGetExtensionメソッドを使います。 GetExtensionメソッドでは、パスにファイル名がない場合でも例外にはならず、単に拡張子はないものとして空の文字列が返されます。 このメソッドでは、ピリオド.
も含めて拡張子として扱われます。 (ファイル名がfile.txt
なら拡張子は.txtとなる)
ファイル名が拡張子を持たない場合、拡張子がピリオドのみの場合は空の文字列が返されます。 ピリオドが複数あるファイル名の場合は、一番最後のピリオド以降を拡張子として返します。 (ファイル名がfile.txt.bak
なら拡張子は.bakとなる)
GetExtensionメソッドでは、UNIX系OSで隠しファイルとして扱われるドットファイル(dot file)のようなピリオドで始まるファイル名に対して特別な考慮はされません。 そのため、ピリオドが一つだけ含まれるドットファイルは、ファイル名全体が拡張子と判断され、GetExtensionメソッドはファイル名をそのまま返します。
さらに非Windows環境では、ピリオドを含み、かつWindows形式のディレクトリ区切り記号\
で終わるパスは、拡張子として判断される点に注意が必要です。 例えばパスsome.dir\
はディレクトリではなくファイルを表すものと判断されるため、これに従い拡張子も.dir\
であると判断されます。 パスsome.dir/
では、ディレクトリを表すと判断されるため、これに従い拡張子はないものとして扱われます。