Path.Combine Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Объединяет строки в путь.
Перегрузки
| Имя | Описание |
|---|---|
| Combine(String[]) |
Объединяет массив строк в путь. |
| Combine(String, String) |
Объединяет две строки в путь. |
| Combine(String, String, String) |
Объединяет три строки в путь. |
| Combine(String, String, String, String) |
Объединяет четыре строки в путь. |
Комментарии
Этот метод предназначен для объединения отдельных строк в одну строку, представляющую путь к файлу. Однако если аргумент, отличный от первого, содержит корневой путь, все предыдущие компоненты пути игнорируются, а возвращаемая строка начинается с этого корневого компонента пути. В качестве альтернативы методу Combine рекомендуется использовать методы Join или TryJoin (недоступны в .NET Framework).
Important
Этот метод предполагает, что первый аргумент является абсолютным путем и что приведенный ниже аргумент или аргумент являются относительными путями. Если это не так, и особенно если последующие аргументы являются строковыми входными данными пользователя, вызовите 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[]
Массив частей пути.
Возвращаемое значение
Объединенные пути.
Исключения
.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 но последний не является диском и не заканчивается AltDirectorySeparatorCharDirectorySeparatorChar ни символом, 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 .
См. также раздел
- форматы пути File в системах Windows
Применяется к
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
Второй путь для объединения.
Возвращаемое значение
Объединенные пути. Если один из указанных путей является строкой нулевой длины, этот метод возвращает другой путь. Если path2 содержит абсолютный путь, этот метод возвращается path2.
Исключения
.NET Framework и .NET Core версии старше 2.1: path1 или path2 содержит один или несколько недопустимых символов, определенных в GetInvalidPathChars().
path1 или path2 есть null.
Примеры
В следующем примере показано использование метода Combine в Windows.
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или VolumeSeparatorCharDirectorySeparatorChar добавляется к 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 .
Список распространенных задач ввода-вывода см. в разделе Распространенные задачи ввода-вывода.
См. также раздел
- форматы пути File в системах Windows
- Файловый и потоковый ввод-вывод
- Практическое руководство. Чтение текста из файла
- Практическое руководство. Запись текста в файл
Применяется к
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
Третий путь для объединения.
Возвращаемое значение
Объединенные пути.
Исключения
.NET Framework и .NET Core версии старше 2.1: path1, path2 или path3 содержит один или несколько недопустимых символов, определенных в GetInvalidPathChars().
path1, или path2path3 есть 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" или "\\archives\public"). Если path2 или path3 является абсолютным путем, операция объединения удаляет все ранее объединенные пути и сбрасывает этот абсолютный путь.
Строки нулевой длины опущены из объединенного пути.
Если path1 или path2 нет ссылки на диск (то есть "C:" или "D:") и не заканчивается допустимым символом разделителя, определенным в DirectorySeparatorChar, AltDirectorySeparatorCharили VolumeSeparatorCharDirectorySeparatorChar добавляется в 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 добавлении path2 пробела (например, "\file.txt"), Combine метод добавляется к path1.
.NET Framework и .NET Core версии старше 2.1. Не все недопустимые символы для имен каталогов и файлов интерпретируются как неприемлемые методом Combine, так как эти символы можно использовать для поиска подстановочных знаков. Например, в то время как может быть недопустимым, если Path.Combine("c:\\", "*.txt") вы создали файл из него, это допустимо в качестве строки поиска. Поэтому он успешно интерпретируется методом Combine .
См. также раздел
- форматы пути File в системах Windows
Применяется к
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
Четвертый путь для объединения.
Возвращаемое значение
Объединенные пути.
Исключения
.NET Framework и .NET Core версии старше 2.1: path1, path2, path3 или path4 содержит один или несколько недопустимых символов, определенных в GetInvalidPathChars().
path1, , path2path3или 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" или "\\archives\public"). Если один из последующих путей также является абсолютным путем, операция объединения удаляет все ранее объединенные пути и сбрасывает этот абсолютный путь.
Строки нулевой длины опущены из объединенного пути.
Если path1, path2или path3 нет ссылки на диск (то есть "C:" или "D:") и не заканчивается допустимым символом разделителя, как определено в DirectorySeparatorChar, AltDirectorySeparatorCharили VolumeSeparatorCharDirectorySeparatorChar добавляется к нему перед объединением. Обратите внимание, что если path1path2или 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 добавлении path2 пробела (например, "\file.txt"), Combine метод добавляется к path1.
.NET Framework и .NET Core версии старше 2.1. Не все недопустимые символы для имен каталогов и файлов интерпретируются как неприемлемые методом Combine, так как эти символы можно использовать для поиска подстановочных знаков. Например, в то время как может быть недопустимым, если Path.Combine("c:\\", "*.txt") вы создали файл из него, это допустимо в качестве строки поиска. Поэтому он успешно интерпретируется методом Combine .
См. также раздел
- форматы пути File в системах Windows