Path.Combine Метод

Определение

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

Перегрузки

Combine(String[])

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

Combine(String, String)

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

Combine(String, String, String)

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

Combine(String, String, String, String)

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

Комментарии

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

Важно!

Этот метод предполагает, что первый аргумент является абсолютным путем и что следующий аргумент или аргументы являются относительными путями. Если это не так, и особенно если какие-либо последующие аргументы являются строками, введенными пользователем, вызовите Join вместо этого метод или TryJoin метод.

Combine(String[])

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

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 и версии .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)

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

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

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

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

String

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

Исключения

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

Параметр path1 или path2 имеет значение null.

Примеры

В следующем примере показано использование 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 = "";
        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

Если 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)

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

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

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

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

String

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

Исключения

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

Значение параметра path1, path2 или path3 равно null.

Примеры

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

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" или "\\archivespublic\"). Если 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)

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

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

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

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

String

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

Исключения

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

Параметр path1, path2, path3 или path4 имеет значение null.

Примеры

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

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

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

Если path1, path2или path3 не является ссылкой на диск (то есть "C:" или "D:") и не заканчивается допустимым символом разделителя, как определено в DirectorySeparatorChar, AltDirectorySeparatorCharили VolumeSeparatorCharDirectorySeparatorChar добавляется к нему перед объединением. Обратите внимание, что если 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 .

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

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