Поделиться через


Path.Combine Метод

Определение

Объединяет строки в путь.

Перегрузки

Combine(ReadOnlySpan<String>)

Объединяет диапазон строк в путь.

Combine(String[])

Объединяет массив строк в путь.

Combine(String, String)

Объединяет две строки в путь.

Combine(String, String, String)

Объединяет три строки в путь.

Combine(String, String, String, String)

Объединяет четыре строки в путь.

Комментарии

Этот метод предназначен для объединения отдельных строк в одну строку, представляющую путь к файлу. Однако если аргумент, отличный от первого, содержит корневой путь, все предыдущие компоненты пути игнорируются, а возвращаемая строка начинается с этого корневого компонента пути. В качестве альтернативы методу Combine рекомендуется использовать методы Join или TryJoin.

Важный

Этот метод предполагает, что первый аргумент является абсолютным путем и что приведенный ниже аргумент или аргумент являются относительными путями. Если это не так, и особенно если последующие аргументы являются строками, входными пользователем, вызовите вместо этого метод 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: одна из строк в массиве содержит один или несколько недопустимых символов, определенных в GetInvalidPathChars().

Одна из строк в массиве — 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

Строки нулевой длины опущены из объединенного пути.

Параметры не анализируются, если они имеют пробелы.

Версии .NET Framework и .NET Core старше 2.1. Не все недопустимые символы для имен каталогов и файлов интерпретируются как неприемлемые методом Combine, так как эти символы можно использовать для поиска подстановочных знаков. Например, в то время как Path.Combine("c:\\", "*.txt") может быть недопустимым, если вы создали файл из него, это допустимо в качестве строки поиска. Поэтому он успешно интерпретируется методом Combine.

См. также раздел

Применяется к

Combine(String, String)

Исходный код:
Path.cs
Исходный код:
Path.cs
Исходный код:
Path.cs

Объединяет две строки в путь.

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

Второй путь для объединения.

Возвращаемое значение

Объединенные пути. Если один из указанных путей является строкой нулевой длины, этот метод возвращает другой путь. Если path2 содержит абсолютный путь, этот метод возвращает path2.

Исключения

Версии .NET Framework и .NET Core старше 2.1: path1 или path2 содержат один или несколько недопустимых символов, определенных в GetInvalidPathChars().

path1 или path2null.

Примеры

В следующем примере показано использование метода Combine в Windows.

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 = "";

        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'
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

Если path2 не включает корень (например, если path2 не начинается с символа разделителя или спецификации диска), результатом является объединение двух путей с промежуточным символом разделителя. Если path2 включает корень, возвращается path2.

Параметры не анализируются, если они имеют пробелы. Таким образом, если path2 включает пробелы (например, "\file.txt"), метод Combine добавляет path2 к path1 вместо возврата только path2.

Версии .NET Framework и .NET Core старше 2.1. Не все недопустимые символы для имен каталогов и файлов интерпретируются как неприемлемые методом Combine, так как эти символы можно использовать для поиска подстановочных знаков. Например, в то время как Path.Combine("c:\\", "*.txt") может быть недопустимым, если вы создали файл из него, это допустимо в качестве строки поиска. Поэтому он успешно интерпретируется методом Combine.

Список распространенных задач ввода-вывода см. в разделе Распространенные задачи ввода-вывода.

См. также раздел

Применяется к

Combine(String, String, String)

Исходный код:
Path.cs
Исходный код:
Path.cs
Исходный код:
Path.cs

Объединяет три строки в путь.

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

Второй путь для объединения.

path3
String

Третий путь для объединения.

Возвращаемое значение

Объединенные пути.

Исключения

Версии .NET Framework и .NET Core старше 2.1: path1, path2или path3 содержат один или несколько недопустимых символов, определенных в GetInvalidPathChars().

path1, path2или path3null.

Примеры

В следующем примере объединяются три пути.

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 также является абсолютным путем, операция объединения удаляет все ранее объединенные пути и сбрасывает этот абсолютный путь.

Строки нулевой длины опущены из объединенного пути.

Если 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 не начинается с символа разделителя или спецификации диска), результатом является объединение двух путей с промежуточным символом разделителя. Если path2 включает корень, возвращается path2.

Параметры не анализируются, если они имеют пробелы. Таким образом, если path2 включает пробелы (например, "\file.txt"), метод Combine добавляет path2 к path1.

Версии .NET Framework и .NET Core старше 2.1. Не все недопустимые символы для имен каталогов и файлов интерпретируются как неприемлемые методом Combine, так как эти символы можно использовать для поиска подстановочных знаков. Например, в то время как Path.Combine("c:\\", "*.txt") может быть недопустимым, если вы создали файл из него, это допустимо в качестве строки поиска. Поэтому он успешно интерпретируется методом Combine.

См. также раздел

Применяется к

Combine(String, String, String, String)

Исходный код:
Path.cs
Исходный код:
Path.cs
Исходный код:
Path.cs

Объединяет четыре строки в путь.

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

Второй путь для объединения.

path3
String

Третий путь для объединения.

path4
String

Четвертый путь для объединения.

Возвращаемое значение

Объединенные пути.

Исключения

Версии .NET Framework и .NET Core старше 2.1: path1, path2, path3или path4 содержат один или несколько недопустимых символов, определенных в GetInvalidPathChars().

path1, path2, path3или path4null.

Примеры

В следующем примере объединяются четыре пути.

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"). Если один из последующих путей также является абсолютным путем, операция объединения удаляет все ранее объединенные пути и сбрасывает этот абсолютный путь.

Строки нулевой длины опущены из объединенного пути.

Если 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 не начинается с символа разделителя или спецификации диска), результатом является объединение двух путей с промежуточным символом разделителя. Если path2 включает корень, возвращается path2.

Параметры не анализируются, если они имеют пробелы. Таким образом, если path2 включает пробелы (например, "\file.txt"), метод Combine добавляет path2 к path1.

Версии .NET Framework и .NET Core старше 2.1. Не все недопустимые символы для имен каталогов и файлов интерпретируются как неприемлемые методом Combine, так как эти символы можно использовать для поиска подстановочных знаков. Например, в то время как Path.Combine("c:\\", "*.txt") может быть недопустимым, если вы создали файл из него, это допустимо в качестве строки поиска. Поэтому он успешно интерпретируется методом Combine.

См. также раздел

Применяется к