C#

【C#】ファイルパスから拡張子を除いたファイル名を抜き出す方法

C#でファイル処理をするアプリケーションを作る時、こんなことがよくあります。

  • ファイルパスからファイル名を抜き出したい
  • 抜き出すファイル名に拡張子は不要

以前紹介した以下の記事ではファイル名を抜き出すというやり方でした。今回はこれの拡張子無し版です。↓

前回の方法でファイル名を抜き出し、その後「.」で文字列分割してとかいうやり方もありますが、今回はもっとカンタンなやり方を紹介します。

Path.GetFileNameWithoutExtensionを使う

C#の標準ライブラリであるPathクラスにGetFileNameWithoutExtensionというメソッドが用意されています。これを使えば一発で拡張子を除いたファイル名を抜き出すことが可能です。

Path.GetFileNameWithoutExtension仕様

以下Microsoftサイトより↓

パラメーター

path: String型
ファイルのパス。

戻り値

String型
GetFileName(String) によって返された文字列 (最後のピリオド (.) と、その後ろのすべての文字を除く)。

例外

ArgumentException
path が、GetInvalidPathChars() で定義されている無効な文字を 1 つ以上含んでいます。

サンプルソース

出力結果

Path.GetFileNameWithoutExtensionで引数にString型のファイルパス文字列を渡すと、戻り値で拡張子無しのファイル名がString型で返る仕様になっています。

使用する際の注意点

さきほどのサンプルソースでも試していましたが、以下のような仕様になっていることを気を付けておきましょう。

  • 拡張子が無いファイルの場合は拡張子が無い状態のファイル名が返る
  • 拡張子が複数付いている場合は、最後尾に付いている拡張子だけ除かれた文字列がファイル名として返る