Path.Combine() / Path.GetFileName()
| 対応: | C# 1.0(2002) |
|---|
ファイルパスを安全に結合する『Path.Combine()』と、パスからファイル名部分を取り出す『Path.GetFileName()』です。
構文
// パスを結合します(OS のパス区切り文字を自動で補完します) Path.Combine(string path1, string path2) Path.Combine(params string[] paths) // パスからファイル名(拡張子含む)を取得します Path.GetFileName(string path) // パスから拡張子なしのファイル名を取得します Path.GetFileNameWithoutExtension(string path) // パスから拡張子を取得します(先頭にドットが付きます) Path.GetExtension(string path) // パスからディレクトリ部分を取得します Path.GetDirectoryName(string path)
メソッド一覧
| メソッド | 概要 |
|---|---|
| Path.Combine(path1, path2) | 2つ以上のパスを結合します。OS の区切り文字(Windows は \、Linux/Mac は /)を自動で挿入します。 |
| Path.GetFileName(path) | パス文字列からファイル名(拡張子含む)だけを返します。 |
| Path.GetFileNameWithoutExtension(path) | 拡張子を除いたファイル名を返します。 |
| Path.GetExtension(path) | 拡張子を返します(例:.txt)。拡張子がない場合は空文字列を返します。 |
| Path.GetDirectoryName(path) | ファイル名を除いたディレクトリ部分を返します。 |
サンプルコード
Program.cs
using System; using System.IO; // Path.Combine() でパスを結合します string フォルダ = @"C:\Users\akiba\documents"; string ファイル名 = "report.txt"; string フルパス = Path.Combine(フォルダ, ファイル名); Console.WriteLine(フルパス); // C:\Users\akiba\documents\report.txt // 3つ以上のパスも結合できます string 保存先 = Path.Combine(@"C:\data", "2024", "01", "log.csv"); Console.WriteLine(保存先); // C:\data\2024\01\log.csv // Path.GetFileName() でファイル名を取り出します string パス = @"C:\Users\akiba\documents\report.txt"; Console.WriteLine(Path.GetFileName(パス)); // report.txt Console.WriteLine(Path.GetFileNameWithoutExtension(パス)); // report Console.WriteLine(Path.GetExtension(パス)); // .txt Console.WriteLine(Path.GetDirectoryName(パス)); // C:\Users\akiba\documents
dotnet script path_combine_getfilename.csx C:\Users\akiba\documents\report.txt C:\data\2024\01\log.csv report.txt report .txt C:\Users\akiba\documents
上記はWindows環境での実行結果です。macOS/Linuxでは Path.Combine() が追加する区切り文字がスラッシュ(/)になるため、C:\Users\akiba\documents/report.txt のように表示されます。
概要
『Path.Combine()』は文字列を直接連結するよりも安全なパスの結合方法です。区切り文字の重複や欠落を自動的に補正するため、Windows・Linux・Mac のいずれの環境でも同じコードが動作します。
パスを手動で文字列連結(path1 + "\\" + path2)するとOSによる動作の違いや区切り文字ミスが起きやすいため、必ず『Path.Combine()』を使用してください。
ファイルの読み書きには『File.ReadAllText() / File.WriteAllText()』を参照してください。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。