こんにちは!エンジニアの中沢です。
C#にはファイルパスからファイル名を取得するための「System.IO.Path.GetFileNameメソッド」があります。
「System.IO.Pathクラス」には、ファイル名だけではなく、拡張子や、拡張子なしのファイル名などを取得するメソッドが用意されています。
この記事では、
・ファイルパスからファイル名を取得するには?
・System.IO.Pathクラスの使い方
・ファイル名をパスから取得する方法
・拡張子をパスから取得する方法
・拡張子なしのファイル名をパスから取得する方法
・ディレクトリ名をパスから取得する方法
という基本的な内容から、
・フォルダ内のファイル名を取得する方法
などの応用的な使い方に関しても解説していきます。
今回はこれらの方法を覚えるために、「System.IO.Pathクラス」のさまざまな使い方をわかりやすく解説します!
ファイルパスからファイル名を取得するには?
ファイルパスからファイル名を取得するには、「System.IO.Path.GetFileNameメソッド」を使います。
「System.IO.Path.GetFileNameメソッド」の引数にファイルのパスを指定すると、戻り値としてファイル名が取得できます。
「System.IO.Pathクラス」にはファイル名以外にも、拡張子や拡張子なしのファイル名を取得するメソッドなどが用意されています。
この記事では、これらのファイル名を取得する様々な方法を解説します。
System.IO.Pathクラスの使い方
ファイル名をパスから取得する方法
ファイル名をパスから取得するには、「GetFileNameメソッド」を使います。
引数にファイルのパスを指定すると、戻り値としてファイル名が取得できます。
「GetFileNameメソッド」の使い方を次のプログラムで確認してみましょう。
using System; using System.IO; namespace Sample { class Sample { static void Main() { string filePath = Path.GetFileName(@"C:Samurai\samurai.txt"); Console.WriteLine(filePath); Console.ReadKey(); } } }
実行結果:
samurai.txt
このプログラムでは、「GetFileNameメソッド」を使ってファイルのパスからファイル名だけを取得して表示しています。
拡張子をパスから取得する方法
拡張子をパスから取得するには、「GetExtensionメソッド」を使います。
「GetExtensionメソッド」の使い方を次のプログラムで確認してみましょう。
using System; using System.IO; namespace Sample { class Sample { static void Main() { string filePath = Path.GetExtension(@"C:Samurai\samurai.txt"); Console.WriteLine(filePath); Console.ReadKey(); } } }
実行結果:
.txt
このプログラムでは、「GetExtensionメソッド」を使ってファイルのパスから拡張子を取得して表示しています。
拡張子なしのファイル名をパスから取得する方法
拡張子なしのファイル名をパスから取得するには、「GetFileNameWithoutExtensionメソッド」を使います。
「GetFileNameWithoutExtensionメソッド」の使い方を次のプログラムで確認してみましょう。
using System; using System.IO; namespace Sample { class Sample { static void Main() { string filePath = Path.GetFileNameWithoutExtension(@"C:Samurai\samurai.txt"); Console.WriteLine(filePath); Console.ReadKey(); } } }
実行結果:
samurai
このプログラムでは、「GetFileNameWithoutExtensionメソッド」を使ってファイルのパスから拡張子なしのファイル名を取得して表示しています。
ディレクトリ名をパスから取得する方法
ディレクトリ名をパスから取得するには、「GetDirectoryNameメソッド」を使います。
「GetDirectoryNameメソッド」の使い方を次のプログラムで確認してみましょう。
using System; using System.IO; namespace Sample { class Sample { static void Main() { string name = Path.GetDirectoryName(@"C:Samurai\samurai.txt"); Console.WriteLine(name); Console.ReadKey(); } } }
実行結果:
C:Samurai
このプログラムでは、「GetDirectoryNameメソッド」を使ってディレクトリ名を取得して表示しています。
フォルダ内のすべてのファイル名を取得する方法
フォルダ内のすべてのファイル名を取得するには、「GetFilesメソッド」を使います。
「GetFilesメソッド」は第1引数にフォルダのパスを指定します。第2引数に検索パターンを指定します。
検索パターンにワイルドカードの"*"を指定することで、すべてのファイルのパスを戻り値として取得することができます。
「GetFilesメソッド」の使い方を次のプログラムで確認してみましょう。
以下のサンプルは、Cドライブ直下にSamuraiというフォルダをつくり、その中に以下のファイルがある、という環境で実行しています。
- samurai.txt
- samurai2.txt
- samurai3.txt
フォルダが存在しない場合、エラーとなりますのでご注意ください。
using System; using System.IO; namespace Sample { class Sample { static void Main() { string[] files = Directory.GetFiles(@"C:\Samurai", "*"); foreach (string str in files) { Console.WriteLine(str); } Console.ReadKey(); } } }
実行結果:
C:\Samurai\samurai.txt C:\Samurai\samurai2.txt C:\Samurai\samurai3.txt
このプログラムでは、「GetFilesメソッド」を使って指定したフォルダ内のすべてのファイルのパスを取得して表示しています。
まとめ
いかがでしたか?
今回はファイル名を取得する方法を解説しました。
「System.IO.Pathクラス」にはいろいろなメソッドが用意されているので、条件に合わせて使い分けてくださいね。
もし、ファイル名を取得する方法を忘れてしまったらこの記事を確認してください!