Path.Join Метод

Определение

Перегрузки

Join(String, String, String, String)

Сцепляет четыре пути в один путь.Concatenates four paths into a single path.

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

Сцепляет четыре компонента пути в один путь.Concatenates four path components into a single path.

Join(String, String, String)

Сцепляет три пути в один путь.Concatenates three paths into a single path.

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

Сцепляет два компонента пути в один путь.Concatenates two path components into a single path.

Join(String, String)

Сцепляет два пути в один путь.Concatenates two paths into a single path.

Join(String[])

Сцепляет массив путей в один путь.Concatenates an array of paths into a single path.

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

Сцепляет три компонента пути в один путь.Concatenates three path components into a single path.

Join(String, String, String, String)

Сцепляет четыре пути в один путь.Concatenates four paths into a single path.

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

Первый путь для объединения.The first path to join.

path2
String

Второй путь для объединения.The second path to join.

path3
String

Третий путь для объединения.The third path to join.

path4
String

Четвертый путь для объединения.The fourth path to join.

Возвраты

Сцепленный путь.The concatenated path.

Комментарии

Этот метод просто объединяет path, path2, path3 и path4 и добавляет символ разделителя каталогов между любыми компонентами пути, если он еще не существует.This method simply concatenates path, path2, path3 and path4 and adds a directory separator character between any of the path components if one is not already present. Если длина любого из аргументов path1, path2, path3 или path4 равна нулю, Метод сцепляет оставшиеся аргументы.If the length of any of path1, path2, path3 or path4 argument is zero, the method concatenates the remaining arguments. Если длина результирующей объединенной строки равна нулю, метод возвращает String.Empty.If the length of the resulting concatenated string is zero, the method returns String.Empty.

Если path1 или path2 или path3 заканчиваются символом разделителя пути, который не подходит для целевой платформы, то метод Join сохраняет исходный символ разделителя пути и добавляет поддерживаемый.If path1 or path2 or path3 ends in a path separator character that is not appropriate for the target platform, the Join method preserves the original path separator character and appends the supported one. Эта проблема возникает в жестко запрограммированных путях, в которых используется символ обратной косой черты Windows (""), который не распознается как разделитель пути в системах на базе UNIX.This issue arises in hard-coded paths that use the Windows backslash ("") character, which is not recognized as a path separator on Unix-based systems. Чтобы обойти эту ошибку, можно:To work around this issue, you can:

  • Получите значение свойства Path.DirectorySeparatorChar, а не жестко запрограммированный символ разделителя каталога.Retrieve the value of the Path.DirectorySeparatorChar property rather than hard-coding a directory separator character.

  • В качестве символа разделителя каталога следует использовать косую черту ("/").Use a forward slash ("/") as the directory separator character. Этот символ возвращается свойством Path.DirectorySeparatorChar в системах на базе UNIX и свойством Path.AltDirectorySeparatorChar в системах Windows.This character is returned by the Path.DirectorySeparatorChar property on Unix-based systems and by the Path.AltDirectorySeparatorChar property on Windows systems.

В отличие от метода Combine, метод Join не пытается получить доступ к корню возвращаемого пути.Unlike the Combine method, the Join method does not attempt to root the returned path. (Т. е. Если path2 или path2 или path3 является абсолютным путем, метод Join не удаляет предыдущие пути, как это делает метод Combine.(That is, if path2 or path2 or path3 is an absolute path, the Join method does not discard the previous paths as the Combine method does.

Не все недопустимые символы в именах каталогов и файлов воспринимаются как неприемлемые методом Join, так как эти символы можно использовать для поиска подстановочных знаков.Not all invalid characters for directory and file names are interpreted as unacceptable by the Join method, because you can use these characters for search wildcard characters. Например, хотя Path.Join("c:\\", "temp", "*.txt") может быть недопустимым при создании файла, он допустим в качестве строки поиска.For example, while Path.Join("c:\\", "temp", "*.txt") might be invalid when creating a file, it is valid as a search string. Таким образом, метод Join успешно интерпретирует его.The Join method therefore successfully interprets it.

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

Сцепляет четыре компонента пути в один путь.Concatenates four path components into a single path.

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>

Диапазон символов, содержащий первый путь для объединения.A character span that contains the first path to join.

path2
ReadOnlySpan<Char>

Диапазон символов, содержащий второй путь для объединения.A character span that contains the second path to join.

path3
ReadOnlySpan<Char>

Диапазон символов, содержащий третий путь для объединения.A character span that contains the third path to join.

path4
ReadOnlySpan<Char>

Диапазон символов, содержащий четвертый путь для объединения.A character span that contains the fourth path to join.

Возвраты

Сцепленный путь.The concatenated path.

Комментарии

Этот метод просто объединяет path, path2, path3 и path4 и добавляет символ разделителя каталогов между любыми компонентами пути, если он еще не существует.This method simply concatenates path, path2, path3 and path4 and adds a directory separator character between any of the path components if one is not already present. Если аргумент Length любого из path1, path2, path3 или path4 равен нулю, Метод сцепляет оставшиеся аргументы.If the Length of any of path1, path2, path3 or path4 argument is zero, the method concatenates the remaining arguments. Если значение ReadOnlySpan<T>.Length всех компонентов равно нулю, метод возвращает значение String.Empty.If the ReadOnlySpan<T>.Length of all components is zero, the method returns String.Empty.

Если path1 или path2 или path3 заканчиваются символом разделителя пути, который не подходит для целевой платформы, то метод Join сохраняет исходный символ разделителя пути и добавляет поддерживаемый.If path1 or path2 or path3 ends in a path separator character that is not appropriate for the target platform, the Join method preserves the original path separator character and appends the supported one. Эта проблема возникает в жестко запрограммированных путях, в которых используется символ обратной косой черты Windows (""), который не распознается как разделитель пути в системах на базе UNIX.This issue arises in hard-coded paths that use the Windows backslash ("") character, which is not recognized as a path separator on Unix-based systems. Чтобы обойти эту ошибку, можно:To work around this issue, you can:

  • Получите значение свойства Path.DirectorySeparatorChar, а не жестко запрограммированный символ разделителя каталога.Retrieve the value of the Path.DirectorySeparatorChar property rather than hard-coding a directory separator character.

  • В качестве символа разделителя каталога следует использовать косую черту ("/").Use a forward slash ("/") as the directory separator character. Этот символ возвращается свойством Path.DirectorySeparatorChar в системах на базе UNIX и свойством Path.AltDirectorySeparatorChar в системах Windows.This character is returned by the Path.DirectorySeparatorChar property on Unix-based systems and by the Path.AltDirectorySeparatorChar property on Windows systems.

В отличие от метода Combine, метод Join не пытается получить доступ к корню возвращаемого пути.Unlike the Combine method, the Join method does not attempt to root the returned path. (Т. е. Если path2 или path2 или path3 является абсолютным путем, метод Join не удаляет предыдущие пути, как это делает метод Combine.(That is, if path2 or path2 or path3 is an absolute path, the Join method does not discard the previous paths as the Combine method does.

Не все недопустимые символы в именах каталогов и файлов воспринимаются как неприемлемые методом Join, так как эти символы можно использовать для поиска подстановочных знаков.Not all invalid characters for directory and file names are interpreted as unacceptable by the Join method, because you can use these characters for search wildcard characters. Например, хотя Path.Join("c:\\", "temp", "*.txt") может быть недопустимым при создании файла, он допустим в качестве строки поиска.For example, while Path.Join("c:\\", "temp", "*.txt") might be invalid when creating a file, it is valid as a search string. Таким образом, метод Join успешно интерпретирует его.The Join method therefore successfully interprets it.

Join(String, String, String)

Сцепляет три пути в один путь.Concatenates three paths into a single path.

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

Первый путь для объединения.The first path to join.

path2
String

Второй путь для объединения.The second path to join.

path3
String

Третий путь для объединения.The third path to join.

Возвраты

Сцепленный путь.The concatenated path.

Комментарии

Этот метод просто объединяет path, path2 и path3 и добавляет символ разделителя каталога между любыми компонентами пути, если он еще не существует.This method simply concatenates path, path2, and path3 and adds a directory separator character between any of the path components if one is not already present. Если длина любого из аргументов path1, path2 или path3 равна нулю, Метод сцепляет оставшиеся аргументы.If the length of any of path1, path2 or path3 argument is zero, the method concatenates the remaining arguments. Если длина результирующей объединенной строки равна нулю, метод возвращает String.Empty.If the length of the resulting concatenated string is zero, the method returns String.Empty.

Если path1 или path2 заканчивается символом разделителя пути, который не подходит для целевой платформы, метод Join сохраняет исходный символ разделителя пути и добавляет поддерживаемый.If path1 or path2 ends in a path separator character that is not appropriate for the target platform, the Join method preserves the original path separator character and appends the supported one. Эта проблема возникает в жестко запрограммированных путях, в которых используется символ обратной косой черты Windows (""), который не распознается как разделитель пути в системах на базе UNIX.This issue arises in hard-coded paths that use the Windows backslash ("") character, which is not recognized as a path separator on Unix-based systems. Чтобы обойти эту ошибку, можно:To work around this issue, you can:

  • Получите значение свойства Path.DirectorySeparatorChar, а не жестко запрограммированный символ разделителя каталога.Retrieve the value of the Path.DirectorySeparatorChar property rather than hard-coding a directory separator character.

  • В качестве символа разделителя каталога следует использовать косую черту ("/").Use a forward slash ("/") as the directory separator character. Этот символ возвращается свойством Path.DirectorySeparatorChar в системах на базе UNIX и свойством Path.AltDirectorySeparatorChar в системах Windows.This character is returned by the Path.DirectorySeparatorChar property on Unix-based systems and by the Path.AltDirectorySeparatorChar property on Windows systems.

В отличие от метода Combine, метод Join не пытается получить доступ к корню возвращаемого пути.Unlike the Combine method, the Join method does not attempt to root the returned path. (То есть, если path2 или path2 является абсолютным путем, метод Join не удаляет предыдущие пути, как это делает метод Combine.(That is, if path2 or path2 is an absolute path, the Join method does not discard the previous paths as the Combine method does.

Не все недопустимые символы в именах каталогов и файлов воспринимаются как неприемлемые методом Join, так как эти символы можно использовать для поиска подстановочных знаков.Not all invalid characters for directory and file names are interpreted as unacceptable by the Join method, because you can use these characters for search wildcard characters. Например, хотя Path.Join("c:\\", "temp", "*.txt") может быть недопустимым при создании файла, он допустим в качестве строки поиска.For example, while Path.Join("c:\\", "temp", "*.txt") might be invalid when creating a file, it is valid as a search string. Таким образом, метод Join успешно интерпретирует его.The Join method therefore successfully interprets it.

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

Сцепляет два компонента пути в один путь.Concatenates two path components into a single path.

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>

Диапазон символов, содержащий первый путь для объединения.A character span that contains the first path to join.

path2
ReadOnlySpan<Char>

Диапазон символов, содержащий второй путь для объединения.A character span that contains the second path to join.

Возвраты

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

Комментарии

Этот метод просто объединяет path и path2 и добавляет символ разделителя каталогов между двумя компонентами пути, если он еще не существует в конце path1 или в начале path2.This method simply concatenates path and path2 and adds a directory separator character between the two path components if one is not already present at the end of path1 or the beginning of path2. Если Length либо path1, либо path2 равны нулю, метод возвращает другой путь.If the Length of either path1 or path2 is zero, the method returns the other path. Если Length обоих path1 и path2 равны нулю, метод возвращает значение String.Empty.If the Length of both path1 and path2 is zero, the method returns String.Empty.

Если path1 заканчивается символом разделителя пути, который не подходит для целевой платформы, метод Join сохраняет исходный символ разделителя пути и добавляет поддерживаемый.If path1 ends in a path separator character that is not appropriate for the target platform, the Join method preserves the original path separator character and appends the supported one. Эта проблема возникает в жестко запрограммированных путях, в которых используется символ обратной косой черты Windows (""), который не распознается как разделитель пути в системах на базе UNIX.This issue arises in hard-coded paths that use the Windows backslash ("") character, which is not recognized as a path separator on Unix-based systems. Чтобы обойти эту ошибку, можно:To work around this issue, you can:

  • Получите значение свойства Path.DirectorySeparatorChar, а не жестко запрограммированный символ разделителя каталога.Retrieve the value of the Path.DirectorySeparatorChar property rather than hard-coding a directory separator character.

  • В качестве символа разделителя каталога следует использовать косую черту ("/").Use a forward slash ("/") as the directory separator character. Этот символ возвращается свойством Path.DirectorySeparatorChar в системах на базе UNIX и свойством Path.AltDirectorySeparatorChar в системах Windows.This character is returned by the Path.DirectorySeparatorChar property on Unix-based systems and by the Path.AltDirectorySeparatorChar property on Windows systems.

В отличие от метода Combine, метод Join не пытается получить доступ к корню возвращаемого пути.Unlike the Combine method, the Join method does not attempt to root the returned path. (Т. е. Если path2 является абсолютным путем, метод Join не отклоняет path1 и возвращает path2 в качестве метода Combine.) В следующем примере показана разница в путях, возвращаемых двумя методами.(That is, if path2 is an absolute path, the Join method does not discard path1 and return path2 as the Combine method does.) The following example illustrates the difference in the paths returned by the two methods. Если источником path2 являются входные данные пользователя, метод Combine позволяет пользователю получить доступ к ресурсу файловой системы (например, C:/Users/User1/Documents/Financial/ в случае примера), который приложение не предполагало сделать доступным.If the source of path2 is user input, the Combine method makes it possible for a user to access a file system resource (such as C:/Users/User1/Documents/Financial/ in the case of the example) that the application did not intend to make accessible.

Не все недопустимые символы в именах каталогов и файлов воспринимаются как неприемлемые методом Join, так как эти символы можно использовать для поиска подстановочных знаков.Not all invalid characters for directory and file names are interpreted as unacceptable by the Join method, because you can use these characters for search wildcard characters. Например, хотя Path.Join("c:\\", "*.txt") может быть недопустимым при создании файла, он допустим в качестве строки поиска.For example, while Path.Join("c:\\", "*.txt") might be invalid when creating a file, it is valid as a search string. Таким образом, метод Join успешно интерпретирует его.The Join method therefore successfully interprets it.

ПримерExample

В следующем примере показана разница в путях, возвращаемых методами Path.Join(ReadOnlySpan<Char>, ReadOnlySpan<Char>) и Path.Combine(String, String).The following example illustrates the difference in the paths returned by the Path.Join(ReadOnlySpan<Char>, ReadOnlySpan<Char>) and Path.Combine(String, String) methods. Если первая строка представляет собой полный путь, включающий диск и корневой каталог, а второй — относительный путь от первого пути, два метода дают одинаковые результаты.When the first string is an fully qualified path that includes a drive and root directory and the second is a relative path from the first path, the two methods produce identical results. Во втором и третьем вызове метода ShowPathInformation строки, возвращаемые двумя методами, расходятся.In the second and third calls to the ShowPathInformation method, the strings returned by the two methods diverge. Во втором вызове метода первый строковый аргумент является диском, а второй — корневым каталогом.In the second method call, the first string argument is a drive, while the second is a rooted directory. Метод Join объединяет две строки и сохраняет дублирующиеся разделители путей.The Join method concatenates the two strings and preserves duplicate path separators. Метод Combine отменяет диск и возвращает корневой каталог на текущем диске.The Combine method abandons the drive and returns a rooted directory on the current drive. Если текущий диск приложения — C:\ и строка используется для доступа к файлу или файлам в каталоге, он будет иметь доступ к C: вместо D:.If the application's current drive is C:\ and the string is used to access a file or files in the directory, it would access C: instead of D:. Наконец, поскольку оба аргумента в третьем вызове ShowPathInformation являются корневыми, метод Join просто добавляет их для создания пути к файлу бессмысленное, а метод Combine отменяет первую строку и возвращает второй.Finally, because both arguments in the third call to ShowPathInformation are rooted, the Join method simply appends them to create a nonsensical file path, while the Combine method discards the first string and returns the second. Использование этой строки для доступа к файлу может предоставить приложению непреднамеренной доступ к конфиденциальным файлам.Using this string for file access could give the application unintended access to sensitive files.

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

Дополнительно

Join(String, String)

Сцепляет два пути в один путь.Concatenates two paths into a single path.

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

Первый путь для объединения.The first path to join.

path2
String

Второй путь для объединения.The second path to join.

Возвраты

Сцепленный путь.The concatenated path.

Комментарии

Этот метод просто объединяет path и path2 и добавляет символ разделителя каталогов между любыми компонентами пути, если он еще не существует.This method simply concatenates path and path2 and adds a directory separator character between any of the path components if one is not already present. Если длина path1 или path2 равна нулю, метод объединяет оставшийся аргумент.If the length of either path1 or path2 is zero, the method concatenates the remaining argument. Если длина результирующей объединенной строки равна нулю, метод возвращает String.Empty.If the length of the resulting concatenated string is zero, the method returns String.Empty.

Если path1 заканчивается символом разделителя пути, который не подходит для целевой платформы, метод Join сохраняет исходный символ разделителя пути и добавляет поддерживаемый.If path1 ends in a path separator character that is not appropriate for the target platform, the Join method preserves the original path separator character and appends the supported one. Эта проблема возникает в жестко запрограммированных путях, в которых используется символ обратной косой черты Windows (""), который не распознается как разделитель пути в системах на базе UNIX.This issue arises in hard-coded paths that use the Windows backslash ("") character, which is not recognized as a path separator on Unix-based systems. Чтобы обойти эту ошибку, можно:To work around this issue, you can:

  • Получите значение свойства Path.DirectorySeparatorChar, а не жестко запрограммированный символ разделителя каталога.Retrieve the value of the Path.DirectorySeparatorChar property rather than hard-coding a directory separator character.

  • В качестве символа разделителя каталога следует использовать косую черту ("/").Use a forward slash ("/") as the directory separator character. Этот символ возвращается свойством Path.DirectorySeparatorChar в системах на базе UNIX и свойством Path.AltDirectorySeparatorChar в системах Windows.This character is returned by the Path.DirectorySeparatorChar property on Unix-based systems and by the Path.AltDirectorySeparatorChar property on Windows systems.

В отличие от метода Combine, метод Join не пытается получить доступ к корню возвращаемого пути.Unlike the Combine method, the Join method does not attempt to root the returned path. (Т. е. Если path2 является абсолютным путем, метод Join не удаляет предыдущие пути, как это делает метод Combine.(That is, if path2 is an absolute path, the Join method does not discard the previous paths as the Combine method does.

Не все недопустимые символы в именах каталогов и файлов воспринимаются как неприемлемые методом Join, так как эти символы можно использовать для поиска подстановочных знаков.Not all invalid characters for directory and file names are interpreted as unacceptable by the Join method, because you can use these characters for search wildcard characters. Например, хотя Path.Join("c:\\", "temp", "*.txt") может быть недопустимым при создании файла, он допустим в качестве строки поиска.For example, while Path.Join("c:\\", "temp", "*.txt") might be invalid when creating a file, it is valid as a search string. Таким образом, метод Join успешно интерпретирует его.The Join method therefore successfully interprets it.

Join(String[])

Сцепляет массив путей в один путь.Concatenates an array of paths into a single path.

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[]

Массив путей.An array of paths.

Возвраты

Сцепленный путь.The concatenated path.

Комментарии

Этот метод просто объединяет все строки в paths и добавляет символ разделителя каталога между любыми компонентами пути, если он еще не существует.This method simply concatenates all the strings in paths and adds a directory separator character between any of the path components if one is not already present. Если Length любого из путей в paths равно нулю, Метод сцепляет оставшиеся аргументы.If the Length of any of the paths in paths is zero, the method concatenates the remaining arguments. Если результирующая Объединенная строка имеет нулевую длину, метод возвращает String.Empty.If the resulting concatenated string's length is zero, the method returns String.Empty.

Если любой из путей в paths, за исключением последнего, заканчивается символом разделителя пути, который не подходит для целевой платформы, метод Join сохраняет исходный символ разделителя пути и добавляет поддерживаемый.If any of the paths in paths, except for the last one, ends in a path separator character that is not appropriate for the target platform, the Join method preserves the original path separator character and appends the supported one. Эта проблема возникает в жестко запрограммированных путях, в которых используется символ обратной косой черты Windows (""), который не распознается как разделитель пути в системах на базе UNIX.This issue arises in hard-coded paths that use the Windows backslash ("") character, which is not recognized as a path separator on Unix-based systems. Чтобы обойти эту ошибку, можно:To work around this issue, you can:

  • Получите значение свойства Path.DirectorySeparatorChar, а не жестко запрограммированный символ разделителя каталога.Retrieve the value of the Path.DirectorySeparatorChar property rather than hard-coding a directory separator character.

  • В качестве символа разделителя каталога следует использовать косую черту ("/").Use a forward slash ("/") as the directory separator character. Этот символ возвращается свойством Path.DirectorySeparatorChar в системах на базе UNIX и свойством Path.AltDirectorySeparatorChar в системах Windows.This character is returned by the Path.DirectorySeparatorChar property on Unix-based systems and by the Path.AltDirectorySeparatorChar property on Windows systems.

В отличие от метода Combine, метод Join не пытается получить доступ к корню возвращаемого пути.Unlike the Combine method, the Join method does not attempt to root the returned path. (Т. е. Если любой из путей в paths, за исключением последнего, является абсолютным путем, метод Join не удаляет предыдущие пути, как и метод Combine.(That is, if any of the paths in paths, except for the last one, is an absolute path, the Join method does not discard the previous paths as the Combine method does.

Не все недопустимые символы в именах каталогов и файлов воспринимаются как неприемлемые методом Join, так как эти символы можно использовать для поиска подстановочных знаков.Not all invalid characters for directory and file names are interpreted as unacceptable by the Join method, because you can use these characters for search wildcard characters. Например, хотя Path.Join("c:\\", "temp", "*.txt") может быть недопустимым при создании файла, он допустим в качестве строки поиска.For example, while Path.Join("c:\\", "temp", "*.txt") might be invalid when creating a file, it is valid as a search string. Таким образом, метод Join успешно интерпретирует его.The Join method therefore successfully interprets it.

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

Сцепляет три компонента пути в один путь.Concatenates three path components into a single path.

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>

Диапазон символов, содержащий первый путь для объединения.A character span that contains the first path to join.

path2
ReadOnlySpan<Char>

Диапазон символов, содержащий второй путь для объединения.A character span that contains the second path to join.

path3
ReadOnlySpan<Char>

Диапазон символов, содержащий третий путь для объединения.A character span that contains the third path to join.

Возвраты

Сцепленный путь.The concatenated path.

Комментарии

Этот метод просто объединяет path, path2 и path3 и добавляет символ разделителя каталога между любыми компонентами пути, если он еще не существует.This method simply concatenates path, path2, and path3 and adds a directory separator character between any of the path components if one is not already present. Если Length любого из аргументов path1, path2 или path3 равен нулю, Метод сцепляет оставшиеся аргументы.If the Length of any of path1, path2, or path3 arguments is zero, the method concatenates the remaining arguments. Если значение ReadOnlySpan<T>.Length всех компонентов равно нулю, метод возвращает значение String.Empty.If the ReadOnlySpan<T>.Length of all components is zero, the method returns String.Empty.

Если path1 или path2 заканчивается символом разделителя пути, который не подходит для целевой платформы, метод Join сохраняет исходный символ разделителя пути и добавляет поддерживаемый.If path1 or path2 ends in a path separator character that is not appropriate for the target platform, the Join method preserves the original path separator character and appends the supported one. Эта проблема возникает в жестко запрограммированных путях, в которых используется символ обратной косой черты Windows (""), который не распознается как разделитель пути в системах на базе UNIX.This issue arises in hard-coded paths that use the Windows backslash ("") character, which is not recognized as a path separator on Unix-based systems. Чтобы обойти эту ошибку, можно:To work around this issue, you can:

  • Получите значение свойства Path.DirectorySeparatorChar, а не жестко запрограммированный символ разделителя каталога.Retrieve the value of the Path.DirectorySeparatorChar property rather than hard-coding a directory separator character.

  • В качестве символа разделителя каталога следует использовать косую черту ("/").Use a forward slash ("/") as the directory separator character. Этот символ возвращается свойством Path.DirectorySeparatorChar в системах на базе UNIX и свойством Path.AltDirectorySeparatorChar в системах Windows.This character is returned by the Path.DirectorySeparatorChar property on Unix-based systems and by the Path.AltDirectorySeparatorChar property on Windows systems.

В отличие от метода Combine, метод Join не пытается получить доступ к корню возвращаемого пути.Unlike the Combine method, the Join method does not attempt to root the returned path. (То есть, если path2 или path2 является абсолютным путем, метод Join не удаляет предыдущие пути, как это делает метод Combine.(That is, if path2 or path2 is an absolute path, the Join method does not discard the previous paths as the Combine method does.

Не все недопустимые символы в именах каталогов и файлов воспринимаются как неприемлемые методом Join, так как эти символы можно использовать для поиска подстановочных знаков.Not all invalid characters for directory and file names are interpreted as unacceptable by the Join method, because you can use these characters for search wildcard characters. Например, хотя Path.Join("c:\\", "temp", "*.txt") может быть недопустимым при создании файла, он допустим в качестве строки поиска.For example, while Path.Join("c:\\", "temp", "*.txt") might be invalid when creating a file, it is valid as a search string. Таким образом, метод Join успешно интерпретирует его.The Join method therefore successfully interprets it.

ПримерExample

В следующем примере показана разница в путях, возвращаемых методами Path.Join(ReadOnlySpan<Char>, ReadOnlySpan<Char>, ReadOnlySpan<Char>) и Path.Combine(String, String, String).The following example illustrates the difference in the paths returned by the Path.Join(ReadOnlySpan<Char>, ReadOnlySpan<Char>, ReadOnlySpan<Char>) and Path.Combine(String, String, String) methods. Если первая строка представляет собой полный путь, включающий диск и корневой каталог, а второй — относительный путь от первого пути, два метода дают одинаковые результаты.When the first string is a fully qualified path that includes a drive and root directory and the second is a relative path from the first path, the two methods produce identical results. Во втором и третьем вызове метода ShowPathInformation строки, возвращаемые двумя методами, расходятся.In the second and third calls to the ShowPathInformation method, the strings returned by the two methods diverge. Во втором вызове метода первый строковый аргумент является диском, а второй — корневым каталогом.In the second method call, the first string argument is a drive, while the second is a rooted directory. Метод Join объединяет две строки и сохраняет дублирующиеся разделители путей.The Join method concatenates the two strings and preserves duplicate path separators. Вызов метода GetFullPath приведет к исключению дублирования.A call to the GetFullPath method would eliminate the duplication. Метод Combine отменяет диск и возвращает корневой каталог на текущем диске.The Combine method abandons the drive and returns a rooted directory on the current drive. Если текущий диск приложения — C:\ и строка используется для доступа к файлу или файлам в каталоге, он будет иметь доступ к C: вместо D:.If the application's current drive is C:\ and the string is used to access a file or files in the directory, it would access C: instead of D:. Наконец, поскольку последний аргумент в третьем вызове ShowPathInformation является корневым, метод Join просто добавляет его к первым двум аргументам, чтобы создать путь к файлу бессмысленное, а метод Combine отбрасывает первые две строки и возвращает третий.Finally, because the final argument in the third call to ShowPathInformation are rooted, the Join method simply appends it to the first two arguments to create a nonsensical file path, while the Combine method discards the first two strings and returns the third. Использование этой строки для доступа к файлу может предоставить приложению непреднамеренной доступ к конфиденциальным файлам.Using this string for file access could give the application unintended access to sensitive files.

using System;
using System.IO;

class Program
{
    static void Main()
    {
        string path1 = "C:/";
        string path2 = "users/user1/documents";
        string path3 = "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);
    }

   private static void ShowPathInformation(string path1, string path2, string path3)
    {
        var 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)}'");
        Console.WriteLine($"   {Path.GetFullPath(result)}");
    }
}
// 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'
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'
 

Дополнительно

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