Path.Combine メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
文字列をパスに結合します。
オーバーロード
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 System::String ^ Combine(ReadOnlySpan<System::String ^> paths);
public static string Combine (scoped ReadOnlySpan<string> paths);
static member Combine : ReadOnlySpan<string> -> string
Public Shared Function Combine (paths As ReadOnlySpan(Of String)) As String
パラメーター
- paths
- ReadOnlySpan<String>
パスの一部のスパン。
戻り値
結合されたパス。
適用対象
Combine(String[])
- ソース:
- Path.cs
- ソース:
- Path.cs
- ソース:
- Path.cs
文字列の配列をパスに結合します。
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[]
パスの一部の配列。
戻り値
結合されたパス。
例外
.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);
Dim paths As String() = {"d:\archives", "2001", "media", "images"}
Dim fullPath As String = 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
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)
- ソース:
- Path.cs
- ソース:
- Path.cs
- ソース:
- Path.cs
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
結合する最初のパス。
- path2
- String
結合する 2 番目のパス。
戻り値
結合されたパス。 指定したパスの 1 つが長さ 0 の文字列の場合、このメソッドはもう一方のパスを返します。
path2
に絶対パスが含まれている場合、このメソッドは path2
を返します。
例外
.NET Framework および .NET Core バージョン 2.1 より前のバージョン: path1
または path2
には、GetInvalidPathChars()で定義されている無効な文字が 1 つ以上含まれています。
path1
または path2
が null
。
例
次の例では、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:^*&)(_=@#'\\^.*(.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:^*&)(_=@#'\\^.*(.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:^*&)(_=@#'\^.*(.txt' and 'subdir\file.txt', the result is:
// 'c:^*&)(_=@#'\^.*(.txt\subdir\file.txt'
//
// When you combine '' and 'subdir\file.txt', the result is:
// 'subdir\file.txt'
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:^*&)(_=@#'\\^.*(.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:^*&)(_=@#'\^.*(.txt' and 'subdir\file.txt', the result is:
' 'c:^*&)(_=@#'\^.*(.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
path2
にルートが含まれていない場合 (たとえば、path2
が区切り文字またはドライブ指定で始まらない場合)、結果は 2 つのパスを連結し、中間の区切り文字を使用します。 ルート path2
含まれている場合は、path2
が返されます。
パラメーターに空白がある場合、パラメーターは解析されません。 したがって、path2
に空白 ("\file.txt"など) が含まれている場合、Combine メソッドは path2
のみを返すのではなく、path1
に path2
を追加します。
2.1 より前のバージョンの .NET Framework および .NET Core: ディレクトリ名とファイル名のすべての無効な文字は、検索ワイルドカード文字に使用できるため、Combine
メソッドでは受け入れられないと解釈されるわけではありません。 たとえば、Path.Combine("c:\\", "*.txt")
からファイルを作成する場合は無効な場合があります。検索文字列として有効です。 そのため、Combine
メソッドによって正常に解釈されます。
一般的な I/O タスクの一覧については、「一般的な I/O タスクの」を参照してください。
こちらもご覧ください
- Windows システムでのファイル パス形式の
- ファイルおよびストリーム I/O
- 方法: ファイル からテキストを読み取る
- 方法: ファイル にテキストを書き込む
適用対象
Combine(String, String, String)
- ソース:
- Path.cs
- ソース:
- Path.cs
- ソース:
- Path.cs
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
結合する最初のパス。
- path2
- String
結合する 2 番目のパス。
- path3
- String
結合する 3 番目のパス。
戻り値
結合されたパス。
例外
2.1 より前の .NET Framework および .NET Core バージョン: path1
、path2
、または path3
には、GetInvalidPathChars()で定義されている無効な文字が 1 つ以上含まれています。
path1
、path2
、または path3
が null
。
例
次の例では、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
path2
にルートが含まれていない場合 (たとえば、path2
が区切り文字またはドライブ指定で始まらない場合)、結果は 2 つのパスを連結し、中間の区切り文字を使用します。 ルート path2
含まれている場合は、path2
が返されます。
パラメーターに空白がある場合、パラメーターは解析されません。 したがって、path2
に空白 ("\file.txt"など) が含まれている場合、Combine メソッドは path1
に path2
を追加します。
2.1 より前のバージョンの .NET Framework および .NET Core: ディレクトリ名とファイル名のすべての無効な文字は、検索ワイルドカード文字に使用できるため、Combine
メソッドでは受け入れられないと解釈されるわけではありません。 たとえば、Path.Combine("c:\\", "*.txt")
からファイルを作成する場合は無効な場合があります。検索文字列として有効です。 そのため、Combine
メソッドによって正常に解釈されます。
こちらもご覧ください
適用対象
Combine(String, String, String, String)
- ソース:
- Path.cs
- ソース:
- Path.cs
- ソース:
- Path.cs
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
結合する最初のパス。
- path2
- String
結合する 2 番目のパス。
- path3
- String
結合する 3 番目のパス。
- path4
- String
結合する 4 番目のパス。
戻り値
結合されたパス。
例外
.NET Framework および .NET Core バージョン 2.1 より前のバージョン: path1
、path2
、path3
、または path4
には、GetInvalidPathChars()で定義されている無効な文字が 1 つ以上含まれています。
path1
、path2
、path3
、または path4
が null
。
例
次の例では、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\
path2
にルートが含まれていない場合 (たとえば、path2
が区切り文字またはドライブ指定で始まらない場合)、結果は 2 つのパスを連結し、中間の区切り文字を使用します。 ルート path2
含まれている場合は、path2
が返されます。
パラメーターに空白がある場合、パラメーターは解析されません。 したがって、path2
に空白 ("\file.txt"など) が含まれている場合、Combine メソッドは path1
に path2
を追加します。
2.1 より前のバージョンの .NET Framework および .NET Core: ディレクトリ名とファイル名のすべての無効な文字は、検索ワイルドカード文字に使用できるため、Combine
メソッドでは受け入れられないと解釈されるわけではありません。 たとえば、Path.Combine("c:\\", "*.txt")
からファイルを作成する場合は無効な場合があります。検索文字列として有効です。 そのため、Combine
メソッドによって正常に解釈されます。
こちらもご覧ください
適用対象
.NET