HasExtensionメソッドを使うことで、パスの表すファイル部分が、拡張子を持つかどうかを調べることができます。 HasExtensionメソッドでは、パスにファイル名がない場合でも例外にはならず、単に拡張子がないものとしてFalseが返されます。

ファイル名部分のうち、どの部分を拡張子と判断するかの基準はGetExtensionメソッドと同様です。 このため、UNIX系OSで隠しファイルとして扱われるドットファイル(dot file)は、常に拡張子を持つものとして判断されます。

Path.HasExtensionメソッドで拡張子を持つファイル名かどうか調べる
using System;
using System.IO;

class Sample {
  static void Main()
  {
    foreach (var path in new[] {
      @"E:\dir\subdir\file.txt",  // 絶対パス (Windows形式)
      @"/dir/subdir/file.txt",    // 絶対パス (UNIX形式)
      @".\dir\subdir\file.txt",   // 相対パス (Windows形式)
      @"./dir/subdir/file.txt",   // 相対パス (UNIX形式)
      @"file.txt",                // ファイル名のみのパス
      @"file",                    // 拡張子のないファイル名
      @"file.txt.bak",            // ピリオドを二つ以上含むファイル名
      @"file.",                   // ピリオドで終わるファイル名
      @"some.dir\",               // ピリオドを含むディレクトリ名のパス (Windows形式)
      @"some.dir/",               // ピリオドを含むディレクトリ名のパス (UNIX形式)
      @"dir/.file",               // ピリオドで始まるファイル名
      @".file",                   // ピリオドで始まるファイル名
    }) {
      Console.WriteLine("path = {0}", path);
      Console.WriteLine("has ext? {0}", Path.HasExtension(path)); // パスのファイル名が拡張子を含むかどうか
      Console.WriteLine();
    }
  }
}
実行結果
path = E:\dir\subdir\file.txt
has ext? True

path = /dir/subdir/file.txt
has ext? True

path = .\dir\subdir\file.txt
has ext? True

path = ./dir/subdir/file.txt
has ext? True

path = file.txt
has ext? True

path = file
has ext? False

path = file.txt.bak
has ext? True

path = file.
has ext? False

path = some.dir\
has ext? False

path = some.dir/
has ext? False

path = dir/.file
has ext? True

path = .file
has ext? True

実行結果
path = E:\dir\subdir\file.txt
has ext? True

path = /dir/subdir/file.txt
has ext? True

path = .\dir\subdir\file.txt
has ext? True

path = ./dir/subdir/file.txt
has ext? True

path = file.txt
has ext? True

path = file
has ext? False

path = file.txt.bak
has ext? True

path = file.
has ext? False

path = some.dir\
has ext? True

path = some.dir/
has ext? False

path = dir/.file
has ext? True

path = .file
has ext? True

MENTAにてテキストチャットによるサポートを行っています。 問題の解決法をお探しの方や.NET/C#を学習中の方はどうぞご利用ください。