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
.
См. также раздел
- форматы пути файлов в системах Windows
Применяется к
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
или 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:^*&)(_=@#'\\^.*(.txt";
String^ path5 = "";
String^ path6 = nullptr;
CombinePaths( path1, path2 );
CombinePaths( path1, path3 );
CombinePaths( path3, path2 );
CombinePaths( path4, path2 );
CombinePaths( path5, path2 );
CombinePaths( path6, path2 );
}
using System;
using System.IO;
public class ChangeExtensionTest
{
public static void Main()
{
string path1 = "c:\\temp";
string path2 = "subdir\\file.txt";
string path3 = "c:\\temp.txt";
string path4 = "c:^*&)(_=@#'\\^.*(.txt";
string path5 = "";
CombinePaths(path1, path2);
CombinePaths(path1, path3);
CombinePaths(path3, path2);
CombinePaths(path4, path2);
CombinePaths(path5, path2);
}
private static void CombinePaths(string p1, string p2)
{
string combination = Path.Combine(p1, p2);
Console.WriteLine("When you combine '{0}' and '{1}', the result is: {2}'{3}'",
p1, p2, Environment.NewLine, combination);
Console.WriteLine();
}
}
// This code produces output similar to the following:
//
// When you combine 'c:\temp' and 'subdir\file.txt', the result is:
// 'c:\temp\subdir\file.txt'
//
// When you combine 'c:\temp' and 'c:\temp.txt', the result is:
// 'c:\temp.txt'
//
// When you combine 'c:\temp.txt' and 'subdir\file.txt', the result is:
// 'c:\temp.txt\subdir\file.txt'
//
// When you combine 'c:^*&)(_=@#'\^.*(.txt' and 'subdir\file.txt', the result is:
// 'c:^*&)(_=@#'\^.*(.txt\subdir\file.txt'
//
// When you combine '' and 'subdir\file.txt', the result is:
// 'subdir\file.txt'
Imports System.IO
Public Class ChangeExtensionTest
Public Shared Sub Main()
Dim path1 As String = "c:\temp"
Dim path2 As String = "subdir\file.txt"
Dim path3 As String = "c:\temp.txt"
Dim path4 As String = "c:^*&)(_=@#'\\^.*(.txt"
Dim path5 As String = ""
Dim path6 As String = Nothing
CombinePaths(path1, path2)
CombinePaths(path1, path3)
CombinePaths(path3, path2)
CombinePaths(path4, path2)
CombinePaths(path5, path2)
CombinePaths(path6, path2)
End Sub
Private Shared Sub CombinePaths(p1 As String, p2 As String)
Try
Dim combination As String = Path.Combine(p1, p2)
Console.WriteLine("When you combine '{0}' and '{1}', the result is: {2}'{3}'", p1, p2, Environment.NewLine, combination)
Catch e As Exception
If p1 = Nothing Then
p1 = "Nothing"
End If
If p2 = Nothing Then
p2 = "Nothing"
End If
Console.WriteLine("You cannot combine '{0}' and '{1}' because: {2}{3}", p1, p2, Environment.NewLine, e.Message)
End Try
Console.WriteLine()
End Sub
End Class
' This code produces output similar to the following:
'
' When you combine 'c:\temp' and 'subdir\file.txt', the result is:
' 'c:\temp\subdir\file.txt'
'
' When you combine 'c:\temp' and 'c:\temp.txt', the result is:
' 'c:\temp.txt'
'
' When you combine 'c:\temp.txt' and 'subdir\file.txt', the result is:
' 'c:\temp.txt\subdir\file.txt'
'
' When you combine 'c:^*&)(_=@#'\^.*(.txt' and 'subdir\file.txt', the result is:
' 'c:^*&)(_=@#'\^.*(.txt\subdir\file.txt'
'
' When you combine '' and 'subdir\file.txt', the result is:
' 'subdir\file.txt'
'
' You cannot combine '' and 'subdir\file.txt' because:
' Value cannot be null.
' Parameter name: path1
Комментарии
Если path1
не является ссылкой на диск (то есть "C:" или "D:") и не заканчивается допустимым символом разделителя, как определено в DirectorySeparatorChar, AltDirectorySeparatorCharили VolumeSeparatorChar, DirectorySeparatorChar добавляется в path1
перед объединением. Обратите внимание, что если path1
заканчивается символом разделителя путей, который не подходит для целевой платформы, метод Combine
сохраняет исходный символ разделителя путей и добавляет поддерживаемый. В следующем примере сравнивается результат в системах под управлением Windows и Unix, когда обратная косая черта используется в качестве символа разделителя путей.
var result = Path.Combine(@"C:\Pictures\", "Saved Pictures");
Console.WriteLine(result);
// The example displays the following output if run on a Windows system:
// C:\Pictures\Saved Pictures
//
// The example displays the following output if run on a Unix-based system:
// C:\Pictures\/Saved Pictures
Dim result = Path.Combine("C:\Pictures\", "Saved Pictures")
Console.WriteLine(result)
' The example displays the following output if run on a Windows system:
' C:\Pictures\Saved Pictures
'
' The example displays the following output if run on a Unix-based system:
' C:\Pictures\/Saved Pictures
Если path2
не включает корень (например, если path2
не начинается с символа разделителя или спецификации диска), результатом является объединение двух путей с промежуточным символом разделителя. Если path2
включает корень, возвращается path2
.
Параметры не анализируются, если они имеют пробелы. Таким образом, если path2
включает пробелы (например, "\file.txt"), метод Combine добавляет path2
к path1
вместо возврата только path2
.
Версии .NET Framework и .NET Core старше 2.1. Не все недопустимые символы для имен каталогов и файлов интерпретируются как неприемлемые методом Combine
, так как эти символы можно использовать для поиска подстановочных знаков. Например, в то время как Path.Combine("c:\\", "*.txt")
может быть недопустимым, если вы создали файл из него, это допустимо в качестве строки поиска. Поэтому он успешно интерпретируется методом Combine
.
Список распространенных задач ввода-вывода см. в разделе Распространенные задачи ввода-вывода.
См. также раздел
- форматы пути файлов в системах Windows
- файлов и потоковой ввода-вывода
- Практическое руководство. Чтение текста из файла
- Практическое руководство. Запись текста в файл
Применяется к
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
или 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" или "\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
.
См. также раздел
- форматы пути файлов в системах Windows
Применяется к
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
или 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или 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
.
См. также раздел
- форматы пути файлов в системах Windows