Path.Join メソッド

定義

オーバーロード

Join(String, String, String, String)

4 つのパスを単一のパスに連結します。

Join(ReadOnlySpan<Char>, ReadOnlySpan<Char>, ReadOnlySpan<Char>, ReadOnlySpan<Char>)

4 つのパス コンポーネントを単一のパスに連結します。

Join(String, String, String)

3 つのパスを単一のパスに連結します。

Join(ReadOnlySpan<Char>, ReadOnlySpan<Char>)

2 つのパス コンポーネントを単一のパスに連結します。

Join(String, String)

2 つのパスを単一のパスに連結します。

Join(String[])

パスの配列を連結して 1 つのパスにします。

Join(ReadOnlySpan<Char>, ReadOnlySpan<Char>, ReadOnlySpan<Char>)

3 つのパス コンポーネントを単一のパスに連結します。

Join(String, String, String, String)

4 つのパスを単一のパスに連結します。

public:
 static System::String ^ Join(System::String ^ path1, System::String ^ path2, System::String ^ path3, System::String ^ path4);
public static string Join (string? path1, string? path2, string? path3, string? path4);
static member Join : string * string * string * string -> string
Public Shared Function Join (path1 As String, path2 As String, path3 As String, path4 As String) As String

パラメーター

path1
String

結合する 1 番目のパス。

path2
String

結合する 2 番目のパス。

path3
String

結合する 3 番目のパス。

path4
String

結合する 4 番目のパス。

戻り値

String

連結されたパス。

注釈

このメソッドは、、、およびを連結するだけで、 path path2 path3 path4 パスコンポーネントがまだ存在しない場合は、そのディレクトリの区切り文字を追加します。 、、またはのいずれかの引数の長さ path1 path2 が0の場合 path3 path4 、メソッドは残りの引数を連結します。 結果として連結された文字列の長さがゼロの場合、メソッドはを返し String.Empty ます。

path1また path2 はまたはが、 path3 ターゲットプラットフォームに適していないパス区切り文字で終了した場合、 Join メソッドは元のパス区切り文字を保持し、サポートされているものを追加します。 この問題 \ は、Unix ベースのシステムでパスの区切り文字として認識されない Windows 円記号 ("") を使用するハードコードされたパスで発生します。 この問題を回避するには、次の操作を行います。

  • Path.DirectorySeparatorCharディレクトリの区切り文字をハードコーディングするのではなく、プロパティの値を取得します。

  • ディレクトリの区切り記号としてスラッシュ ("/") を使用します。 この文字は、 Path.DirectorySeparatorChar Unix ベースのシステムのプロパティと Windows システムのプロパティによって返され Path.AltDirectorySeparatorChar ます。

メソッドとは異なり CombineJoin メソッドは返されたパスのルートを試行しません。 (またはまたはが絶対パスの場合、メソッドは、 path2 path2 メソッドが path3 Join 行ったように、前のパスを破棄しません Combine

Join検索ワイルドカード文字にはこれらの文字を使用できるため、ディレクトリ名とファイル名に無効な文字が含まれることはありません。 たとえば、 Path.Join("c:\\", "temp", "*.txt") ファイルの作成時には無効になる場合がありますが、検索文字列として有効です。 その Join ため、メソッドは正常に解釈します。

適用対象

Join(ReadOnlySpan<Char>, ReadOnlySpan<Char>, ReadOnlySpan<Char>, ReadOnlySpan<Char>)

4 つのパス コンポーネントを単一のパスに連結します。

public:
 static System::String ^ Join(ReadOnlySpan<char> path1, ReadOnlySpan<char> path2, ReadOnlySpan<char> path3, ReadOnlySpan<char> path4);
public static string Join (ReadOnlySpan<char> path1, ReadOnlySpan<char> path2, ReadOnlySpan<char> path3, ReadOnlySpan<char> path4);
static member Join : ReadOnlySpan<char> * ReadOnlySpan<char> * ReadOnlySpan<char> * ReadOnlySpan<char> -> string
Public Shared Function Join (path1 As ReadOnlySpan(Of Char), path2 As ReadOnlySpan(Of Char), path3 As ReadOnlySpan(Of Char), path4 As ReadOnlySpan(Of Char)) As String

パラメーター

path1
ReadOnlySpan<Char>

結合する最初のパスを含む文字範囲。

path2
ReadOnlySpan<Char>

結合する 2 番目のパスを含む文字範囲。

path3
ReadOnlySpan<Char>

結合する 3 番目のパスを含む文字範囲。

path4
ReadOnlySpan<Char>

結合する 4 番目のパスを含む文字範囲。

戻り値

String

連結されたパス。

注釈

このメソッドは、、、およびを連結するだけで、 path path2 path3 path4 パスコンポーネントがまだ存在しない場合は、そのディレクトリの区切り文字を追加します。 Length、、またはのいずれかの引数のが0の場合 path1 path2 path3 path4 、メソッドは残りの引数を連結します。 ReadOnlySpan<T>.Lengthすべてのコンポーネントのがゼロの場合、メソッドはを返し String.Empty ます。

path1また path2 はまたはが、 path3 ターゲットプラットフォームに適していないパス区切り文字で終了した場合、 Join メソッドは元のパス区切り文字を保持し、サポートされているものを追加します。 この問題 \ は、Unix ベースのシステムでパスの区切り文字として認識されない Windows 円記号 ("") を使用するハードコードされたパスで発生します。 この問題を回避するには、次の操作を行います。

  • Path.DirectorySeparatorCharディレクトリの区切り文字をハードコーディングするのではなく、プロパティの値を取得します。

  • ディレクトリの区切り記号としてスラッシュ ("/") を使用します。 この文字は、 Path.DirectorySeparatorChar Unix ベースのシステムのプロパティと Windows システムのプロパティによって返され Path.AltDirectorySeparatorChar ます。

メソッドとは異なり CombineJoin メソッドは返されたパスのルートを試行しません。 (またはまたはが絶対パスの場合、メソッドは、 path2 path2 メソッドが path3 Join 行ったように、前のパスを破棄しません Combine

Join検索ワイルドカード文字にはこれらの文字を使用できるため、ディレクトリ名とファイル名に無効な文字が含まれることはありません。 たとえば、 Path.Join("c:\\", "temp", "*.txt") ファイルの作成時には無効になる場合がありますが、検索文字列として有効です。 その Join ため、メソッドは正常に解釈します。

適用対象

Join(String, String, String)

3 つのパスを単一のパスに連結します。

public:
 static System::String ^ Join(System::String ^ path1, System::String ^ path2, System::String ^ path3);
public static string Join (string? path1, string? path2, string? path3);
static member Join : string * string * string -> string
Public Shared Function Join (path1 As String, path2 As String, path3 As String) As String

パラメーター

path1
String

結合する 1 番目のパス。

path2
String

結合する 2 番目のパス。

path3
String

結合する 3 番目のパス。

戻り値

String

連結されたパス。

注釈

このメソッドは、、、およびを連結するだけで、 path path2 path3 パスコンポーネントがまだ存在しない場合は、そのディレクトリの区切り文字を追加します。 、、またはのいずれかの引数の長さ path1 path2 が0の場合 path3 、メソッドは残りの引数を連結します。 結果として連結された文字列の長さがゼロの場合、メソッドはを返し String.Empty ます。

path1またはが path2 、ターゲットプラットフォームに適していないパスの区切り文字で終わった場合、 Join メソッドは元のパス区切り文字を保持し、サポートされているものを追加します。 この問題 \ は、Unix ベースのシステムでパスの区切り文字として認識されない Windows 円記号 ("") を使用するハードコードされたパスで発生します。 この問題を回避するには、次の操作を行います。

  • Path.DirectorySeparatorCharディレクトリの区切り文字をハードコーディングするのではなく、プロパティの値を取得します。

  • ディレクトリの区切り記号としてスラッシュ ("/") を使用します。 この文字は、 Path.DirectorySeparatorChar Unix ベースのシステムのプロパティと Windows システムのプロパティによって返され Path.AltDirectorySeparatorChar ます。

メソッドとは異なり CombineJoin メソッドは返されたパスのルートを試行しません。 (またはが絶対パスの場合、メソッドは、 path2 path2 メソッドが Join 行ったように、前のパスを破棄しません Combine

Join検索ワイルドカード文字にはこれらの文字を使用できるため、ディレクトリ名とファイル名に無効な文字が含まれることはありません。 たとえば、 Path.Join("c:\\", "temp", "*.txt") ファイルの作成時には無効になる場合がありますが、検索文字列として有効です。 その Join ため、メソッドは正常に解釈します。

適用対象

Join(ReadOnlySpan<Char>, ReadOnlySpan<Char>)

2 つのパス コンポーネントを単一のパスに連結します。

public:
 static System::String ^ Join(ReadOnlySpan<char> path1, ReadOnlySpan<char> path2);
public static string Join (ReadOnlySpan<char> path1, ReadOnlySpan<char> path2);
static member Join : ReadOnlySpan<char> * ReadOnlySpan<char> -> string
Public Shared Function Join (path1 As ReadOnlySpan(Of Char), path2 As ReadOnlySpan(Of Char)) As String

パラメーター

path1
ReadOnlySpan<Char>

結合する最初のパスを含む文字範囲。

path2
ReadOnlySpan<Char>

結合する 2 番目のパスを含む文字範囲。

戻り値

String

結合されたパス。

次の例は、メソッドとメソッドによって返されるパスの違いを示してい Path.Join(ReadOnlySpan<Char>, ReadOnlySpan<Char>) Path.Combine(String, String) ます。 最初の文字列がドライブおよびルートディレクトリを含む完全修飾パスで、2番目の文字列が最初のパスからの相対パスである場合、2つのメソッドは同じ結果を生成します。 2回目と3回目のメソッドの呼び出しでは、 ShowPathInformation 2 つのメソッドによって返される文字列は分岐します。 2番目のメソッド呼び出しでは、最初の文字列引数はドライブ、2番目の文字列はルート化されたディレクトリです。 メソッドは、 Join 2 つの文字列を連結し、重複するパス区切り記号を保持します。 メソッドは、 Combine ドライブを破棄し、現在のドライブ上のルート化されたディレクトリを返します。 アプリケーションの現在のドライブが C: \ で、この文字列を使用してディレクトリ内の1つまたは複数のファイルにアクセスする場合は、d: ではなく c: にアクセスします。 最後に、の3番目の呼び出しの引数は両方ともルート化されているため ShowPathInformationJoin メソッドは単にそれらを追加して無意味ファイルパスを作成 Combine します。メソッドは、最初の文字列を破棄し、2番目の文字列を返します。 ファイルアクセスにこの文字列を使用すると、アプリケーションが機密ファイルに意図せずアクセスする可能性があります。

using System;
using System.IO;

class Program
{
    static void Main()
    {
        var path1 = "C:/Program Files/";
        var path2 = "Utilities/SystemUtilities";
        ShowPathInformation(path1, path2);

        path1 = "C:/";
        path2 = "/Program Files";
        ShowPathInformation(path1, path2);

        path1 = "C:/Users/Public/Documents/";
        path2 = "C:/Users/User1/Documents/Financial/";
        ShowPathInformation(path1, path2);
    }

    private static void ShowPathInformation(string path1, string path2)
    {
        var result = Path.Join(path1.AsSpan(), path2.AsSpan());
        Console.WriteLine($"Concatenating  '{path1}' and '{path2}'");
        Console.WriteLine($"   Path.Join:     '{result}'");
        Console.WriteLine($"   Path.Combine:  '{Path.Combine(path1, path2)}'");
    }
}
// The example displays the following output if run on a Windows system:
//    Concatenating  'C:/Program Files/' and 'Utilities/SystemUtilities'
//       Path.Join:     'C:/Program Files/Utilities/SystemUtilities'
//       Path.Combine:  'C:/Program Files/Utilities/SystemUtilities'
//
//    Concatenating  'C:/' and '/Program Files'
//       Path.Join:     'C://Program Files'
//       Path.Combine:  '/Program Files'
//
//    Concatenating  'C:/Users/Public/Documents/' and 'C:/Users/User1/Documents/Financial/'
//       Path.Join:     'C:/Users/Public/Documents/C:/Users/User1/Documents/Financial/'
//       Path.Combine:  'C:/Users/User1/Documents/Financial/'
Imports System.IO

Module Example
    Public Sub Main()
        Dim path1 = "C:/Program Files/"
        Dim path2 = "Utilities/SystemUtilities"
        ShowPathInformation(path1, path2)

        path1 = "C:/"
        path2 = "/Program Files"
        ShowPathInformation(path1, path2)

        path1 = "C:/Users/Public/Documents/"
        path2 = "C:/Users/User1/Documents/Financial/"
        ShowPathInformation(path1, path2)
    End Sub

    Private Sub ShowPathInformation(path1 As String, path2 As String)
        Dim result = Path.Join(path1.AsSpan(), path2.AsSpan())
        Console.WriteLine($"Concatenating  '{path1}' and '{path2}'")
        Console.WriteLine($"   Path.Join:     '{result}'")
        Console.WriteLine($"   Path.Combine:  '{Path.Combine(path1, path2)}'")
        Console.WriteLine()
    End Sub
End Module
' The example displays the following output if run on a Windows system:
'    Concatenating  'C:/Program Files/' and 'Utilities/SystemUtilities'
'       Path.Join:     'C:/Program Files/Utilities/SystemUtilities'
'       Path.Combine:  'C:/Program Files/Utilities/SystemUtilities'
'
'    Concatenating  'C:/' and '/Program Files'
'       Path.Join:     'C:'Program Files'
'       Path.Combine:  '/Program Files'
'
'    Concatenating  'C:/Users/Public/Documents/' and 'C:/Users/User1/Documents/Financial/'
'       Path.Join:     'C:/Users/Public/Documents/C:/Users/User1/Documents/Financial/'
'       Path.Combine:  'C:/Users/User1/Documents/Financial/'

注釈

このメソッドは、とを連結するだけで、 path path2 2 つのパスコンポーネントがの末尾または先頭にまだ存在しない場合は、そのディレクトリの区切り文字を追加し path1 path2 ます。 Lengthまたはのいずれ path1path2 がゼロの場合、メソッドはもう一方のパスを返します。 Lengthとの両方 path1 がゼロの場合 path2 、メソッドはを返し String.Empty ます。

path1 ターゲットプラットフォームに適していないパス区切り文字で終了した場合、 Join メソッドは元のパス区切り文字を保持し、サポートされているものを追加します。 この問題 \ は、Unix ベースのシステムでパスの区切り文字として認識されない Windows 円記号 ("") を使用するハードコードされたパスで発生します。 この問題を回避するには、次の操作を行います。

  • Path.DirectorySeparatorCharディレクトリの区切り文字をハードコーディングするのではなく、プロパティの値を取得します。

  • ディレクトリの区切り記号としてスラッシュ ("/") を使用します。 この文字は、 Path.DirectorySeparatorChar Unix ベースのシステムのプロパティと Windows システムのプロパティによって返され Path.AltDirectorySeparatorChar ます。

メソッドとは異なり CombineJoin メソッドは返されたパスのルートを試行しません。 (つまり、が絶対パスの場合、メソッドはを path2 Join 破棄 path1 してを返しません path2 Combine 。次の例は、2つのメソッドによって返されるパスの違いを示しています。 のソース path2 がユーザー入力の場合、 Combine このメソッドを使用すると、ユーザーは、アプリケーションがアクセスできないようにしたファイルシステムリソース (例では、 C:/Users/User1/Documents/財務 など) にアクセスできます。

Join検索ワイルドカード文字にはこれらの文字を使用できるため、ディレクトリ名とファイル名に無効な文字が含まれることはありません。 たとえば、 Path.Join("c:\\", "*.txt") ファイルの作成時には無効になる場合がありますが、検索文字列として有効です。 その Join ため、メソッドは正常に解釈します。

こちらもご覧ください

適用対象

Join(String, String)

2 つのパスを単一のパスに連結します。

public:
 static System::String ^ Join(System::String ^ path1, System::String ^ path2);
public static string Join (string? path1, string? path2);
static member Join : string * string -> string
Public Shared Function Join (path1 As String, path2 As String) As String

パラメーター

path1
String

結合する 1 番目のパス。

path2
String

結合する 2 番目のパス。

戻り値

String

連結されたパス。

注釈

このメソッドは、とを連結するだけで、 path path2 パスコンポーネントがまだ存在しない場合は、そのディレクトリの区切り文字を追加します。 path1またはの長さ path2 が0の場合、メソッドは残りの引数を連結します。 結果として連結された文字列の長さがゼロの場合、メソッドはを返し String.Empty ます。

path1 ターゲットプラットフォームに適していないパス区切り文字で終了した場合、 Join メソッドは元のパス区切り文字を保持し、サポートされているものを追加します。 この問題 \ は、Unix ベースのシステムでパスの区切り文字として認識されない Windows 円記号 ("") を使用するハードコードされたパスで発生します。 この問題を回避するには、次の操作を行います。

  • Path.DirectorySeparatorCharディレクトリの区切り文字をハードコーディングするのではなく、プロパティの値を取得します。

  • ディレクトリの区切り記号としてスラッシュ ("/") を使用します。 この文字は、 Path.DirectorySeparatorChar Unix ベースのシステムのプロパティと Windows システムのプロパティによって返され Path.AltDirectorySeparatorChar ます。

メソッドとは異なり CombineJoin メソッドは返されたパスのルートを試行しません。 (つまり、が絶対パスの場合、メソッドは、 path2 Join メソッドと同じ前のパスを破棄しません Combine

Join検索ワイルドカード文字にはこれらの文字を使用できるため、ディレクトリ名とファイル名に無効な文字が含まれることはありません。 たとえば、 Path.Join("c:\\", "temp", "*.txt") ファイルの作成時には無効になる場合がありますが、検索文字列として有効です。 その Join ため、メソッドは正常に解釈します。

適用対象

Join(String[])

パスの配列を連結して 1 つのパスにします。

public:
 static System::String ^ Join(... cli::array <System::String ^> ^ paths);
public static string Join (params string?[] paths);
static member Join : string[] -> string
Public Shared Function Join (ParamArray paths As String()) As String

パラメーター

paths
String[]

パスの配列。

戻り値

String

連結されたパス。

注釈

このメソッドは、内のすべての文字列を連結するだけで、 paths パスコンポーネントがまだ存在しない場合は、そのディレクトリの区切り文字を追加します。 内の Length いずれかのパスのが paths ゼロの場合、メソッドは残りの引数を連結します。 結果の連結された文字列の長さが0の場合、メソッドはを返し String.Empty ます。

のいずれかのパス (最後のパスを除く) が、 paths ターゲットプラットフォームに適していないパス区切り文字で終了した場合、 Join メソッドは元のパス区切り文字を保持し、サポートされているものを追加します。 この問題 \ は、Unix ベースのシステムでパスの区切り文字として認識されない Windows 円記号 ("") を使用するハードコードされたパスで発生します。 この問題を回避するには、次の操作を行います。

  • Path.DirectorySeparatorCharディレクトリの区切り文字をハードコーディングするのではなく、プロパティの値を取得します。

  • ディレクトリの区切り記号としてスラッシュ ("/") を使用します。 この文字は、 Path.DirectorySeparatorChar Unix ベースのシステムのプロパティと Windows システムのプロパティによって返され Path.AltDirectorySeparatorChar ます。

メソッドとは異なり CombineJoin メソッドは返されたパスのルートを試行しません。 (つまり、最後のパスを除き、のパスのいずれかが絶対パスである場合、メソッドは、 paths メソッドが行う Join ように前のパスを破棄しません Combine

Join検索ワイルドカード文字にはこれらの文字を使用できるため、ディレクトリ名とファイル名に無効な文字が含まれることはありません。 たとえば、 Path.Join("c:\\", "temp", "*.txt") ファイルの作成時には無効になる場合がありますが、検索文字列として有効です。 その Join ため、メソッドは正常に解釈します。

適用対象

Join(ReadOnlySpan<Char>, ReadOnlySpan<Char>, ReadOnlySpan<Char>)

3 つのパス コンポーネントを単一のパスに連結します。

public:
 static System::String ^ Join(ReadOnlySpan<char> path1, ReadOnlySpan<char> path2, ReadOnlySpan<char> path3);
public static string Join (ReadOnlySpan<char> path1, ReadOnlySpan<char> path2, ReadOnlySpan<char> path3);
static member Join : ReadOnlySpan<char> * ReadOnlySpan<char> * ReadOnlySpan<char> -> string
Public Shared Function Join (path1 As ReadOnlySpan(Of Char), path2 As ReadOnlySpan(Of Char), path3 As ReadOnlySpan(Of Char)) As String

パラメーター

path1
ReadOnlySpan<Char>

結合する最初のパスを含む文字範囲。

path2
ReadOnlySpan<Char>

結合する 2 番目のパスを含む文字範囲。

path3
ReadOnlySpan<Char>

結合する 3 番目のパスを含む文字範囲。

戻り値

String

連結されたパス。

次の例は、メソッドとメソッドによって返されるパスの違いを示してい Path.Join(ReadOnlySpan<Char>, ReadOnlySpan<Char>, ReadOnlySpan<Char>) Path.Combine(String, String, String) ます。 最初の文字列がドライブおよびルートディレクトリを含む完全修飾パスで、2番目の文字列が最初のパスからの相対パスである場合、2つのメソッドは同じ結果を生成します。 2回目と3回目のメソッドの呼び出しでは、 ShowPathInformation 2 つのメソッドによって返される文字列は分岐します。 2番目のメソッド呼び出しでは、最初の文字列引数はドライブ、2番目の文字列はルート化されたディレクトリです。 メソッドは、 Join 2 つの文字列を連結し、重複するパス区切り記号を保持します。 メソッドを呼び出すと、 GetFullPath 重複が除去されます。 メソッドは、 Combine ドライブを破棄し、現在のドライブ上のルート化されたディレクトリを返します。 アプリケーションの現在のドライブが C: \ で、この文字列を使用してディレクトリ内の1つまたは複数のファイルにアクセスする場合は、d: ではなく c: にアクセスします。 最後に、の3番目の呼び出しの最後の引数がルートになっているため ShowPathInformationJoin メソッドは単にそれを最初の2つの引数に追加して無意味ファイルパスを作成 Combine します。メソッドは、最初の2つの文字列を破棄し、3番目の文字列を返します。 ファイルアクセスにこの文字列を使用すると、アプリケーションが機密ファイルに意図せずアクセスする可能性があります。

using System;
using System.IO;

class Program
{
    static void Main()
    {
        ShowPathInformation("C:/", "users/user1/documents", "letters");
        ShowPathInformation("D:/", "/users/user1/documents", "letters");
        ShowPathInformation("D:/", "users/user1/documents", "C:/users/user1/documents/data");
    }

   private static void ShowPathInformation(string path1, string path2, string path3)
    {
        Console.WriteLine($"Concatenating  '{path1}', '{path2}', and '{path3}'");
        Console.WriteLine($"   Path.Join:     '{Path.Join(path1, path2, path3)}'");
        Console.WriteLine($"   Path.Combine:  '{Path.Combine(path1, path2, path3)}'");
        Console.WriteLine($"   {Path.GetFullPath(Path.Join(path1, path2, path3))}");
    }
}
// The example displays the following output if run on a Windows system:
// Concatenating  'C:/', 'users/user1/documents', and 'letters'
//    Path.Join:     'C:/users/user1/documents\letters'
//    Path.Combine:  'C:/users/user1/documents\letters'
//    C:\users\user1\documents\letters
// Concatenating  'D:/', '/users/user1/documents', and 'letters'
//    Path.Join:     'D://users/user1/documents\letters'
//    Path.Combine:  '/users/user1/documents\letters'
//    D:\users\user1\documents\letters
// Concatenating  'D:/', 'users/user1/documents', and 'C:/users/user1/documents/data'
//    Path.Join:     'D:/users/user1/documents\C:/users/user1/documents/data'
//    Path.Combine:  'C:/users/user1/documents/data'
//    D:\users\user1\documents\C:\users\user1\documents\data
Imports System.IO

Module Program
    Public Sub Main()
        Dim path1 As String = "C:/"
        Dim path2 As String = "users/user1/documents"
        Dim path3 As String = "letters"
        ShowPathInformation(path1, path2, path3)
        
        path1 = "D:/"
        path2 =  "/users/user1/documents"
        path3 = "letters"
        ShowPathInformation(path1, path2, path3)

        path1 = "D:/"
        path2 =  "users/user1/documents"
        path3 = "C:/users/user1/documents/data"
        ShowPathInformation(path1, path2, path3)
    End Sub

   Private Sub ShowPathInformation(path1 As String, path2 As String, path3 As String)
        Dim result = Path.Join(path1.AsSpan(), path2.AsSpan(), path3.AsSpan())
        Console.WriteLine($"Concatenating  '{path1}, '{path2}', and `{path3}'")
        Console.WriteLine($"   Path.Join:     '{result}'")
        Console.WriteLine($"   Path.Combine:  '{Path.Combine(path1, path2, path3)}'")
    End Sub
End Module
' The example displays the following output if run on a Windows system:
'   Concatenating  'C:/, 'users/user1/documents', and `letters'
'      Path.Join:     'C:/users/user1/documents\letters'
'      Path.Combine:  'C:/users/user1/documents\letters'
'
'   Concatenating  'D:/, '/users/user1/documents', and `letters'
'      Path.Join:     'D:'users/user1/documents\letters'
'      Path.Combine:  '/users/user1/documents\letters'
'
'   Concatenating  'D:/, 'users/user1/documents', and `C:/users/user1/documents/data'
'      Path.Join:     'D:/users/user1/documents\C:/users/user1/documents/data'
'      Path.Combine:  'C:/users/user1/documents/data'

注釈

このメソッドは、、、およびを連結するだけで、 path path2 path3 パスコンポーネントがまだ存在しない場合は、そのディレクトリの区切り文字を追加します。 Length、、またはのいずれかの引数のが0の場合 path1 path2 path3 、メソッドは残りの引数を連結します。 ReadOnlySpan<T>.Lengthすべてのコンポーネントのがゼロの場合、メソッドはを返し String.Empty ます。

path1またはが path2 、ターゲットプラットフォームに適していないパスの区切り文字で終わった場合、 Join メソッドは元のパス区切り文字を保持し、サポートされているものを追加します。 この問題 \ は、Unix ベースのシステムでパスの区切り文字として認識されない Windows 円記号 ("") を使用するハードコードされたパスで発生します。 この問題を回避するには、次の操作を行います。

  • Path.DirectorySeparatorCharディレクトリの区切り文字をハードコーディングするのではなく、プロパティの値を取得します。

  • ディレクトリの区切り記号としてスラッシュ ("/") を使用します。 この文字は、 Path.DirectorySeparatorChar Unix ベースのシステムのプロパティと Windows システムのプロパティによって返され Path.AltDirectorySeparatorChar ます。

メソッドとは異なり CombineJoin メソッドは返されたパスのルートを試行しません。 (またはが絶対パスの場合、メソッドは、 path2 path2 メソッドが Join 行ったように、前のパスを破棄しません Combine

Join検索ワイルドカード文字にはこれらの文字を使用できるため、ディレクトリ名とファイル名に無効な文字が含まれることはありません。 たとえば、 Path.Join("c:\\", "temp", "*.txt") ファイルの作成時には無効になる場合がありますが、検索文字列として有効です。 その Join ため、メソッドは正常に解釈します。

こちらもご覧ください

適用対象