Path.Combine メソッド

定義

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

オーバーロード

Combine(String[])

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

Combine(String, String)

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

Combine(String, String, String)

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

Combine(String, String, String, String)

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

注釈

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

重要

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

Combine(String[])

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

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

パラメーター

paths
String[]

パスの構成要素の配列。

戻り値

String

結合されたパス。

例外

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

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

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

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

注釈

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

のいずれかの要素が、最後の要素がドライブではなく、 paths またはのいずれかの文字で終了しない場合 DirectorySeparatorChar AltDirectorySeparatorCharCombine メソッドは 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
Dim paths As String() = { "d:\archives", "2001", "media", "images" }
Dim fullPath As String = Path.Combine(paths)
Console.WriteLine(fullPath)            

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

paths = { "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 Linux 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 されます。

こちらもご覧ください

適用対象

Combine(String, String)

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

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

パラメーター

path1
String

結合する 1 番目のパス。

path2
String

結合する 2 番目のパス。

戻り値

String

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

例外

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

path1 または path2null です。

次の例では、アプリケーション ベースのデスクトップ プラットフォームで Windows Combine を使用する方法を示します。

using namespace System;
using namespace System::IO;
void CombinePaths( String^ p1, String^ p2 )
{
   try
   {
      String^ combination = Path::Combine( p1, p2 );
      Console::WriteLine( "When you combine '{0}' and '{1}', the result is: {2}'{3}'", p1, p2, Environment::NewLine, combination );
   }
   catch ( Exception^ e ) 
   {
      if (p1 == nullptr)
         p1 = "nullptr";
      if (p2 == nullptr)
         p2 = "nullptr";
      Console::WriteLine( "You cannot combine '{0}' and '{1}' because: {2}{3}", p1, p2, Environment::NewLine, e->Message );
   }

   Console::WriteLine();
}

int main()
{
   String^ path1 = "c:\\temp";
   String^ path2 = "subdir\\file.txt";
   String^ path3 = "c:\\temp.txt";
   String^ path4 = "c:^*&)(_=@#'\\^&#2.*(.txt";
   String^ path5 = "";
   String^ path6 = nullptr;
   CombinePaths( path1, path2 );
   CombinePaths( path1, path3 );
   CombinePaths( path3, path2 );
   CombinePaths( path4, path2 );
   CombinePaths( path5, path2 );
   CombinePaths( path6, path2 );
}
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 = "";
        string path6 = null;

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

    private static void CombinePaths(string p1, string p2) {

        try {
            string combination = Path.Combine(p1, p2);

            Console.WriteLine("When you combine '{0}' and '{1}', the result is: {2}'{3}'",
                        p1, p2, Environment.NewLine, combination);
        } catch (Exception e) {
            if (p1 == null)
                p1 = "null";
            if (p2 == null)
                p2 = "null";
            Console.WriteLine("You cannot combine '{0}' and '{1}' because: {2}{3}",
                        p1, p2, Environment.NewLine, e.Message);
        }

        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'
//
// You cannot combine 'null' and 'subdir\file.txt' because:
// Value cannot be null.
// Parameter name: path1
Imports System.IO

Public Class ChangeExtensionTest
    
    
    Public Shared Sub Main()
        Dim path1 As String = "c:\temp"
        Dim path2 As String = "subdir\file.txt"
        Dim path3 As String = "c:\temp.txt"
        Dim path4 As String = "c:^*&)(_=@#'\\^&#2.*(.txt"
        Dim path5 As String = ""
        Dim path6 As String = Nothing

        CombinePaths(path1, path2)
        CombinePaths(path1, path3)
        CombinePaths(path3, path2)
        CombinePaths(path4, path2)
        CombinePaths(path5, path2)
        CombinePaths(path6, path2)
    End Sub

    Private Shared Sub CombinePaths(p1 As String, p2 As String)
        
        Try
            Dim combination As String = Path.Combine(p1, p2)
            
            Console.WriteLine("When you combine '{0}' and '{1}', the result is: {2}'{3}'", p1, p2, Environment.NewLine, combination)
        Catch e As Exception
            If p1 = Nothing Then
                p1 = "Nothing"
            End If
            If p2 = Nothing Then
                p2 = "Nothing"
            End If
            Console.WriteLine("You cannot combine '{0}' and '{1}' because: {2}{3}", p1, p2, Environment.NewLine, e.Message)
        End Try
        
        Console.WriteLine()
    End Sub
End Class
' 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'
' 
' You cannot combine '' and 'subdir\file.txt' because: 
' Value cannot be null.
' Parameter name: path1

注釈

path1 ドライブ参照 (つまり、"C:" または "D:") で、または で定義されている有効な区切り文字で終わらない場合は、連結の前に にが追加されます。 DirectorySeparatorChar AltDirectorySeparatorChar 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
Dim 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

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

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

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

共通 I/O タスクの一覧は、 共通 I/O タスク を参照してください。

こちらもご覧ください

適用対象

Combine(String, String, String)

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

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

パラメーター

path1
String

結合する 1 番目のパス。

path2
String

結合する 2 番目のパス。

path3
String

結合する 3 番目のパス。

戻り値

String

結合されたパス。

例外

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

path1path2、または path3null です。

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

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

注釈

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

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

または がドライブ参照 path1 path2 (つまり、"C:" または "D:") DirectorySeparatorChar AltDirectorySeparatorChar VolumeSeparatorChar DirectorySeparatorChar path1 で、または 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
Dim 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

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

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

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

こちらもご覧ください

適用対象

Combine(String, String, String, String)

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

public:
 static System::String ^ Combine(System::String ^ path1, System::String ^ path2, System::String ^ path3, System::String ^ path4);
public static string Combine (string path1, string path2, string path3, string path4);
static member Combine : string * string * string * string -> string
Public Shared Function Combine (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

結合されたパス。

例外

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

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);
Dim path1 As String = "d:\archives\"
Dim path2 As String = "2001"
Dim path3 As String = "media"
Dim path4 As String = "imaged"
Dim combinedPath As String = Path.Combine(path1, path2, path3, path4)
Console.WriteLine(combined)

注釈

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

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

、、または がドライブ参照 path1 path2 path3 (つまり、"C:" または "D:") DirectorySeparatorChar AltDirectorySeparatorChar VolumeSeparatorChar ではなく、または DirectorySeparatorChar で定義されている有効な区切り文字で終わらない場合は、連結の前に追加されます。 、、または がターゲット プラットフォームに適していないパス区切り文字で終わる場合、メソッドは元のパス区切り文字を保持し、サポートされている区切り文字を追加 path1 path2 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\
Dim 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\

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

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

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

こちらもご覧ください

適用対象