英語で読む

次の方法で共有


Path.Combine メソッド

定義

文字列をパスに結合します。

オーバーロード

Combine(ReadOnlySpan<String>)

文字列のスパンをパスに結合します。

Combine(String[])

文字列の配列をパスに結合します。

Combine(String, String)

2 つの文字列を 1 つのパスに結合します。

Combine(String, String, String)

3 つの文字列を 1 つのパスに結合します。

Combine(String, String, String, String)

4 つの文字列を 1 つのパスに結合します。

注釈

このメソッドは、個々の文字列を、ファイル パスを表す 1 つの文字列に連結することを目的としています。 ただし、最初の引数以外の引数にルートパスが含まれている場合は、以前のパス コンポーネントはすべて無視され、返される文字列はそのルートパスコンポーネントで始まります。 Combine メソッドの代わりに、Join メソッドまたは TryJoin メソッド (.NET Framework では使用できません) の使用を検討してください。

重要

このメソッドは、最初の引数が絶対パスであり、次の引数または引数が相対パスであることを前提としています。 そうでない場合、特に後続の引数がユーザーによって入力された文字列である場合は、代わりに Join または TryJoin メソッドを呼び出します。

Combine(ReadOnlySpan<String>)

文字列のスパンをパスに結合します。

public static string Combine (scoped ReadOnlySpan<string> paths);

パラメーター

paths
ReadOnlySpan<String>

パスの一部のスパン。

戻り値

結合されたパス。

適用対象

.NET 9
製品 バージョン
.NET 9

Combine(String[])

ソース:
Path.cs
ソース:
Path.cs
ソース:
Path.cs

文字列の配列をパスに結合します。

public static string Combine (params string[] paths);

パラメーター

paths
String[]

パスの一部の配列。

戻り値

結合されたパス。

例外

.NET Framework および .NET Core バージョンが 2.1 より前: 配列内の文字列の 1 つに、GetInvalidPathChars()で定義されている無効な文字が 1 つ以上含まれています。

配列内の文字列の 1 つが nullです。

次の例では、文字列の配列をパスに結合します。

string[] paths = {@"d:\archives", "2001", "media", "images"};
string fullPath = Path.Combine(paths);
Console.WriteLine(fullPath);

注釈

paths は、結合するパスの部分の配列である必要があります。 後続のパスのいずれかが絶対パスの場合、結合操作はその絶対パスから開始してリセットされ、以前に結合されたすべてのパスが破棄されます。

paths 内の要素のうち、最後の要素がドライブではなく、DirectorySeparatorChar 文字または AltDirectorySeparatorChar 文字で終わらない場合、Combine メソッドはその要素と次の要素の間に DirectorySeparatorChar 文字を追加します。 要素がターゲット プラットフォームに適さないパス区切り文字で終わる場合、Combine メソッドは元のパス区切り文字を保持し、サポートされている文字を追加します。 次の例では、円記号をパス区切り文字として使用する場合に、Windows ベースと Unix ベースのシステムの結果を比較します。

string[] paths = {@"d:\archives", "2001", "media", "images"};
string fullPath = Path.Combine(paths);
Console.WriteLine(fullPath);            

paths = new string[] {@"d:\archives\", @"2001\", "media", "images"};
fullPath = Path.Combine(paths);
Console.WriteLine(fullPath); 

paths = new string[] {"d:/archives/", "2001/", "media", "images"};
fullPath = Path.Combine(paths);
Console.WriteLine(fullPath); 
// The example displays the following output if run on a Windows system:
//    d:\archives\2001\media\images
//    d:\archives\2001\media\images
//    d:/archives/2001/media\images
//
// The example displays the following output if run on a Unix-based system:
//    d:\archives/2001/media/images
//    d:\archives\/2001\/media/images
//    d:/archives/2001/media/images

長さ 0 の文字列は、結合されたパスから省略されます。

パラメーターに空白がある場合、パラメーターは解析されません。

2.1 より前のバージョンの .NET Framework および .NET Core: ディレクトリ名とファイル名のすべての無効な文字は、検索ワイルドカード文字に使用できるため、Combine メソッドでは受け入れられないと解釈されるわけではありません。 たとえば、Path.Combine("c:\\", "*.txt") からファイルを作成する場合は無効な場合があります。検索文字列として有効です。 そのため、Combine メソッドによって正常に解釈されます。

こちらもご覧ください

  • Windows システムでのファイル パス形式の

適用対象

.NET 9 およびその他のバージョン
製品 バージョン
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

Combine(String, String)

ソース:
Path.cs
ソース:
Path.cs
ソース:
Path.cs

2 つの文字列を 1 つのパスに結合します。

public static string Combine (string path1, string path2);

パラメーター

path1
String

結合する最初のパス。

path2
String

結合する 2 番目のパス。

戻り値

結合されたパス。 指定したパスの 1 つが長さ 0 の文字列の場合、このメソッドはもう一方のパスを返します。 path2 に絶対パスが含まれている場合、このメソッドは path2を返します。

例外

.NET Framework および .NET Core バージョン 2.1 より前のバージョン: path1 または path2 には、GetInvalidPathChars()で定義されている無効な文字が 1 つ以上含まれています。

path1 または path2null

次の例では、Windows で Combine メソッドを使用する方法を示します。

using System;
using System.IO;

public class ChangeExtensionTest
{
    public static void Main()
    {
        string path1 = "c:\\temp";
        string path2 = "subdir\\file.txt";
        string path3 = "c:\\temp.txt";
        string path4 = "c:^*&)(_=@#'\\^&#2.*(.txt";
        string path5 = "";

        CombinePaths(path1, path2);
        CombinePaths(path1, path3);
        CombinePaths(path3, path2);
        CombinePaths(path4, path2);
        CombinePaths(path5, path2);
    }

    private static void CombinePaths(string p1, string p2)
    {
        string combination = Path.Combine(p1, p2);

        Console.WriteLine("When you combine '{0}' and '{1}', the result is: {2}'{3}'",
                    p1, p2, Environment.NewLine, combination);

        Console.WriteLine();
    }
}
// This code produces output similar to the following:
//
// When you combine 'c:\temp' and 'subdir\file.txt', the result is:
// 'c:\temp\subdir\file.txt'
//
// When you combine 'c:\temp' and 'c:\temp.txt', the result is:
// 'c:\temp.txt'
//
// When you combine 'c:\temp.txt' and 'subdir\file.txt', the result is:
// 'c:\temp.txt\subdir\file.txt'
//
// When you combine 'c:^*&)(_=@#'\^&#2.*(.txt' and 'subdir\file.txt', the result is:
// 'c:^*&)(_=@#'\^&#2.*(.txt\subdir\file.txt'
//
// When you combine '' and 'subdir\file.txt', the result is:
// 'subdir\file.txt'

注釈

path1 がドライブ参照 (つまり、"C:" または "D:") ではなく、DirectorySeparatorCharAltDirectorySeparatorChar、または VolumeSeparatorCharで定義されている有効な区切り文字で終わらない場合、DirectorySeparatorChar 連結の前に path1 に追加されます。 path1 がターゲット プラットフォームに適さないパス区切り文字で終わる場合、Combine メソッドは元のパス区切り文字を保持し、サポートされている文字を追加します。 次の例では、円記号をパス区切り文字として使用する場合に、Windows ベースと Unix ベースのシステムの結果を比較します。

var result = Path.Combine(@"C:\Pictures\", "Saved Pictures"); 
Console.WriteLine(result);
// The example displays the following output if run on a Windows system:
//    C:\Pictures\Saved Pictures
//
// The example displays the following output if run on a Unix-based system:
//    C:\Pictures\/Saved Pictures

path2 にルートが含まれていない場合 (たとえば、path2 が区切り文字またはドライブ指定で始まらない場合)、結果は 2 つのパスを連結し、中間の区切り文字を使用します。 ルート path2 含まれている場合は、path2 が返されます。

パラメーターに空白がある場合、パラメーターは解析されません。 したがって、path2 に空白 ("\file.txt"など) が含まれている場合、Combine メソッドは path2のみを返すのではなく、path1path2 を追加します。

2.1 より前のバージョンの .NET Framework および .NET Core: ディレクトリ名とファイル名のすべての無効な文字は、検索ワイルドカード文字に使用できるため、Combine メソッドでは受け入れられないと解釈されるわけではありません。 たとえば、Path.Combine("c:\\", "*.txt") からファイルを作成する場合は無効な場合があります。検索文字列として有効です。 そのため、Combine メソッドによって正常に解釈されます。

一般的な I/O タスクの一覧については、「一般的な I/O タスクの」を参照してください。

こちらもご覧ください

適用対象

.NET 9 およびその他のバージョン
製品 バージョン
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

Combine(String, String, String)

ソース:
Path.cs
ソース:
Path.cs
ソース:
Path.cs

3 つの文字列を 1 つのパスに結合します。

public static string Combine (string path1, string path2, string path3);

パラメーター

path1
String

結合する最初のパス。

path2
String

結合する 2 番目のパス。

path3
String

結合する 3 番目のパス。

戻り値

結合されたパス。

例外

2.1 より前の .NET Framework および .NET Core バージョン: path1path2、または path3 には、GetInvalidPathChars()で定義されている無効な文字が 1 つ以上含まれています。

path1path2、または path3null

次の例では、3 つのパスを結合します。

string p1 = @"d:\archives\";
string p2 = "media";
string p3 = "images";
string combined = Path.Combine(p1, p2, p3);
Console.WriteLine(combined);

注釈

path1 絶対パス ("d:\archives" や "\archives\public" など) にする必要があります。 path2 または path3 も絶対パスである場合、結合操作は以前に結合されたすべてのパスを破棄し、その絶対パスにリセットします。

長さ 0 の文字列は、結合されたパスから省略されます。

path1 または path2 がドライブ参照 ("C:" または "D:") ではなく、DirectorySeparatorCharAltDirectorySeparatorChar、または VolumeSeparatorCharで定義されている有効な区切り文字で終わらない場合、連結の前に DirectorySeparatorCharpath1 または path2 に追加されます。 path1 または path2 がターゲット プラットフォームに適さないパス区切り文字で終わる場合、Combine メソッドは元のパス区切り文字を保持し、サポートされている文字を追加します。 次の例では、円記号をパス区切り文字として使用する場合に、Windows ベースと Unix ベースのシステムの結果を比較します。

var result = Path.Combine(@"C:\Pictures\", @"Saved Pictures\", "2019"); 
Console.WriteLine(result);
// The example displays the following output if run on a Windows system:
//    C:\Pictures\Saved Pictures\2019
//
// The example displays the following output if run on a Unix-based system:
//    C:\Pictures\/Saved Pictures\/2019

path2 にルートが含まれていない場合 (たとえば、path2 が区切り文字またはドライブ指定で始まらない場合)、結果は 2 つのパスを連結し、中間の区切り文字を使用します。 ルート path2 含まれている場合は、path2 が返されます。

パラメーターに空白がある場合、パラメーターは解析されません。 したがって、path2 に空白 ("\file.txt"など) が含まれている場合、Combine メソッドは path1path2 を追加します。

2.1 より前のバージョンの .NET Framework および .NET Core: ディレクトリ名とファイル名のすべての無効な文字は、検索ワイルドカード文字に使用できるため、Combine メソッドでは受け入れられないと解釈されるわけではありません。 たとえば、Path.Combine("c:\\", "*.txt") からファイルを作成する場合は無効な場合があります。検索文字列として有効です。 そのため、Combine メソッドによって正常に解釈されます。

こちらもご覧ください

  • Windows システムでのファイル パス形式の

適用対象

.NET 9 およびその他のバージョン
製品 バージョン
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

Combine(String, String, String, String)

ソース:
Path.cs
ソース:
Path.cs
ソース:
Path.cs

4 つの文字列を 1 つのパスに結合します。

public static string Combine (string path1, string path2, string path3, string path4);

パラメーター

path1
String

結合する最初のパス。

path2
String

結合する 2 番目のパス。

path3
String

結合する 3 番目のパス。

path4
String

結合する 4 番目のパス。

戻り値

結合されたパス。

例外

.NET Framework および .NET Core バージョン 2.1 より前のバージョン: path1path2path3、または path4 には、GetInvalidPathChars()で定義されている無効な文字が 1 つ以上含まれています。

path1path2path3、または path4null

次の例では、4 つのパスを結合します。

string path1 = @"d:\archives\";
string path2 = "2001";
string path3 = "media";
string path4 = "images";
string combinedPath = Path.Combine(path1, path2, path3, path4);
Console.WriteLine(combinedPath);

注釈

path1 絶対パス ("d:\archives" や "\archives\public" など) にする必要があります。 後続のパスの 1 つが絶対パスでもある場合、結合操作は以前に結合されたすべてのパスを破棄し、その絶対パスにリセットします。

長さ 0 の文字列は、結合されたパスから省略されます。

path1path2、または path3 がドライブ参照 (つまり、"C:" または "D:") ではなく、DirectorySeparatorCharAltDirectorySeparatorChar、または VolumeSeparatorCharで定義されている有効な区切り文字で終わらない場合は、連結の前に DirectorySeparatorChar が追加されます。 path1path2、または path3 がターゲット プラットフォームに適していないパス区切り文字で終わる場合、Combine メソッドは元のパス区切り文字を保持し、サポートされている文字を追加します。 次の例では、円記号をパス区切り文字として使用する場合に、Windows ベースと Unix ベースのシステムの結果を比較します。

var result = Path.Combine(@"C:\Pictures\", @"Saved Pictures\", @"2019\", @"Jan\"); 
Console.WriteLine(result);
// The example displays the following output if run on a Windows system:
//    C:\Pictures\Saved Pictures\2019\Jan\
//
// The example displays the following output if run on a Unix-based system:
//    C:\Pictures\Saved Pictures\2019\Jan\

path2 にルートが含まれていない場合 (たとえば、path2 が区切り文字またはドライブ指定で始まらない場合)、結果は 2 つのパスを連結し、中間の区切り文字を使用します。 ルート path2 含まれている場合は、path2 が返されます。

パラメーターに空白がある場合、パラメーターは解析されません。 したがって、path2 に空白 ("\file.txt"など) が含まれている場合、Combine メソッドは path1path2 を追加します。

2.1 より前のバージョンの .NET Framework および .NET Core: ディレクトリ名とファイル名のすべての無効な文字は、検索ワイルドカード文字に使用できるため、Combine メソッドでは受け入れられないと解釈されるわけではありません。 たとえば、Path.Combine("c:\\", "*.txt") からファイルを作成する場合は無効な場合があります。検索文字列として有効です。 そのため、Combine メソッドによって正常に解釈されます。

こちらもご覧ください

  • Windows システムでのファイル パス形式の

適用対象

.NET 9 およびその他のバージョン
製品 バージョン
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1