GetFileNameメソッドでパスからファイル名を抽出できるのに対して、GetFileNameWithoutExtensionメソッドではパスから拡張子を除いたファイル名を抽出します。 例えば、パスのファイル名部分がfile.txt
の場合、GetFileNameWithoutExtensionメソッドはfileを返します。 パスから拡張子のみを抽出するには、GetExtensionメソッドを使います。
GetFileNameWithoutExtensionメソッドは、パスのファイル名部分に拡張子がなければ、ファイル名をそのまま返します。
GetFileNameWithoutExtensionメソッドでは、UNIX系OSで隠しファイルとして扱われるドットファイル(dot file)のようなピリオドで始まるファイル名に対して特別な考慮はされません。 そのため、ピリオドが一つだけ含まれるドットファイルは、ファイル名全体が拡張子と判断され、GetFileNameWithoutExtensionメソッドは空の文字列を返します。
Path.GetFileNameWithoutExtensionメソッドで拡張子を除いたファイル名を抽出する
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", // 相対パス (Windows形式)
@".\dir\subdir\file", // 拡張子のないファイル (Windows形式)
@"/dir/subdir/file.txt", // 絶対パス (UNIX形式)
@"./dir/subdir/file.txt", // 相対パス (UNIX形式)
@"./dir/subdir/file", // 拡張子のないファイル (UNIX形式)
@"file.txt", // ファイル名のみのパス
@".file", // ピリオドで始まるファイル名
}) {
Console.WriteLine("path = {0}", path);
Console.WriteLine("file = {0}", Path.GetFileName(path)); // パスからファイル名を抽出
Console.WriteLine("file w/o ext = {0}", Path.GetFileNameWithoutExtension(path)); // パスから拡張子を除いたファイル名を抽出
Console.WriteLine();
}
}
}
実行結果
path = E:\dir\subdir\file.txt file = file.txt file w/o ext = file path = .\dir\subdir\file.txt file = file.txt file w/o ext = file path = .\dir\subdir\file file = file file w/o ext = file path = /dir/subdir/file.txt file = file.txt file w/o ext = file path = ./dir/subdir/file.txt file = file.txt file w/o ext = file path = ./dir/subdir/file file = file file w/o ext = file path = file.txt file = file.txt file w/o ext = file path = .file file = .file file w/o ext =
実行結果
path = E:\dir\subdir\file.txt file = E:\dir\subdir\file.txt file w/o ext = E:\dir\subdir\file path = .\dir\subdir\file.txt file = .\dir\subdir\file.txt file w/o ext = .\dir\subdir\file path = .\dir\subdir\file file = .\dir\subdir\file file w/o ext = path = /dir/subdir/file.txt file = file.txt file w/o ext = file path = ./dir/subdir/file.txt file = file.txt file w/o ext = file path = ./dir/subdir/file file = file file w/o ext = file path = file.txt file = file.txt file w/o ext = file path = .file file = .file file w/o ext =