Path.Combine Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Łączy ciągi w ścieżkę.
Przeciążenia
Combine(ReadOnlySpan<String>) |
Łączy zakres ciągów w ścieżkę. |
Combine(String[]) |
Łączy tablicę ciągów w ścieżkę. |
Combine(String, String) |
Łączy dwa ciągi w ścieżkę. |
Combine(String, String, String) |
Łączy trzy ciągi w ścieżkę. |
Combine(String, String, String, String) |
Łączy cztery ciągi w ścieżkę. |
Uwagi
Ta metoda ma na celu połączenie pojedynczych ciągów w jeden ciąg reprezentujący ścieżkę pliku. Jeśli jednak argument inny niż pierwszy zawiera ścieżkę rooted, wszystkie poprzednie składniki ścieżki są ignorowane, a zwracany ciąg zaczyna się od tego składnika ścieżki root. Alternatywą dla metody Combine
jest użycie metod Join lub TryJoin.
Ważny
Ta metoda zakłada, że pierwszy argument jest ścieżką bezwzględną i że następujące argumenty lub argumenty są ścieżkami względnymi. Jeśli tak nie jest, a szczególnie jeśli jakiekolwiek kolejne argumenty są ciągami wejściowymi przez użytkownika, wywołaj metodę Join lub TryJoin.
Combine(ReadOnlySpan<String>)
Łączy zakres ciągów w ścieżkę.
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
Parametry
- paths
- ReadOnlySpan<String>
Zakres części ścieżki.
Zwraca
Połączone ścieżki.
Dotyczy
Combine(String[])
- Źródło:
- Path.cs
- Źródło:
- Path.cs
- Źródło:
- Path.cs
Łączy tablicę ciągów w ścieżkę.
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
Parametry
- paths
- String[]
Tablica części ścieżki.
Zwraca
Połączone ścieżki.
Wyjątki
Wersje .NET Framework i .NET Core starsze niż 2.1: jeden z ciągów w tablicy zawiera jeden lub więcej nieprawidłowych znaków zdefiniowanych w GetInvalidPathChars().
Jednym z ciągów w tablicy jest null
.
Przykłady
Poniższy przykład łączy tablicę ciągów w ścieżkę.
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)
Uwagi
paths
powinna być tablicą części ścieżki do połączenia. Jeśli jedna z kolejnych ścieżek jest ścieżką bezwzględną, operacja łączenia resetuje się począwszy od tej ścieżki bezwzględnej, odrzucając wszystkie poprzednie połączone ścieżki.
Jeśli jakikolwiek element w paths
ale ostatni nie jest dyskiem i nie kończy się znakiem DirectorySeparatorChar lub znakiem AltDirectorySeparatorChar, metoda Combine
dodaje znak DirectorySeparatorChar między tym elementem a następnym. Należy pamiętać, że jeśli element kończy się znakiem separatora ścieżki, który nie jest odpowiedni dla platformy docelowej, metoda Combine
zachowuje oryginalny znak separatora ścieżki i dołącza obsługiwany znak. Poniższy przykład porównuje wynik w systemach Windows i Unix, gdy ukośnik odwrotny jest używany jako znak separatora ścieżki.
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
Ciągi o zerowej długości są pomijane ze połączonej ścieżki.
Parametry nie są analizowane, jeśli mają biały znak.
Wersje .NET Framework i .NET Core starsze niż 2.1: nie wszystkie nieprawidłowe znaki dla nazw katalogów i plików są interpretowane jako niedopuszczalne przez metodę Combine
, ponieważ można użyć tych znaków do wyszukiwania symboli wieloznacznych. Na przykład, gdy Path.Combine("c:\\", "*.txt")
może być nieprawidłowa, jeśli chcesz utworzyć z niego plik, jest on prawidłowy jako ciąg wyszukiwania. W związku z tym metoda Combine
została pomyślnie zinterpretowana.
Zobacz też
Dotyczy
Combine(String, String)
- Źródło:
- Path.cs
- Źródło:
- Path.cs
- Źródło:
- Path.cs
Łączy dwa ciągi w ścieżkę.
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
Parametry
- path1
- String
Pierwsza ścieżka do połączenia.
- path2
- String
Druga ścieżka do połączenia.
Zwraca
Połączone ścieżki. Jeśli jedna z określonych ścieżek jest ciągiem o zerowej długości, ta metoda zwraca drugą ścieżkę. Jeśli path2
zawiera ścieżkę bezwzględną, ta metoda zwraca path2
.
Wyjątki
.NET Framework i .NET Core w wersjach starszych niż 2.1: path1
lub path2
zawiera jeden lub więcej nieprawidłowych znaków zdefiniowanych w GetInvalidPathChars().
path1
lub path2
jest null
.
Przykłady
W poniższym przykładzie pokazano użycie metody Combine
w systemie 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
Uwagi
Jeśli path1
nie jest odwołaniem do dysku (tj. "C:" lub "D:") i nie kończy się prawidłowym znakiem separatora zdefiniowanym w DirectorySeparatorChar, AltDirectorySeparatorCharlub VolumeSeparatorChar, DirectorySeparatorChar jest dołączany do path1
przed połączeniem. Należy pamiętać, że jeśli path1
kończy się znakiem separatora ścieżki, który nie jest odpowiedni dla platformy docelowej, metoda Combine
zachowuje oryginalny znak separatora ścieżki i dołącza obsługiwany znak. Poniższy przykład porównuje wynik w systemach Windows i Unix, gdy ukośnik odwrotny jest używany jako znak separatora ścieżki.
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
Jeśli path2
nie zawiera katalogu głównego (na przykład jeśli path2
nie zaczyna się od znaku separatora lub specyfikacji dysku), wynik jest łączeniem dwóch ścieżek, z pośrednim znakiem separatora. Jeśli path2
zawiera katalog główny, path2
zostanie zwrócony.
Parametry nie są analizowane, jeśli mają biały znak. W związku z tym jeśli path2
zawiera białe znaki (na przykład " \file.txt "), metoda Combine dołącza path2
do path1
zamiast zwracać tylko path2
.
Wersje .NET Framework i .NET Core starsze niż 2.1: nie wszystkie nieprawidłowe znaki dla nazw katalogów i plików są interpretowane jako niedopuszczalne przez metodę Combine
, ponieważ można użyć tych znaków do wyszukiwania symboli wieloznacznych. Na przykład, gdy Path.Combine("c:\\", "*.txt")
może być nieprawidłowa, jeśli chcesz utworzyć z niego plik, jest on prawidłowy jako ciąg wyszukiwania. W związku z tym metoda Combine
została pomyślnie zinterpretowana.
Aby uzyskać listę typowych zadań we/wy, zobacz Typowe zadania we/wy.
Zobacz też
- Formaty ścieżek plików w systemach Windows
- plików i strumienia we/wy
- Instrukcje: odczytywanie tekstu z pliku
- Instrukcje: zapisywanie tekstu w pliku
Dotyczy
Combine(String, String, String)
- Źródło:
- Path.cs
- Źródło:
- Path.cs
- Źródło:
- Path.cs
Łączy trzy ciągi w ścieżkę.
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
Parametry
- path1
- String
Pierwsza ścieżka do połączenia.
- path2
- String
Druga ścieżka do połączenia.
- path3
- String
Trzecia ścieżka do połączenia.
Zwraca
Połączone ścieżki.
Wyjątki
.NET Framework i .NET Core w wersjach starszych niż 2.1: path1
, path2
lub path3
zawiera jeden lub więcej nieprawidłowych znaków zdefiniowanych w GetInvalidPathChars().
path1
, path2
lub path3
jest null
.
Przykłady
Poniższy przykład łączy trzy ścieżki.
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)
Uwagi
path1
powinna być ścieżką bezwzględną (na przykład "d:\archives" lub "\\archives\public"). Jeśli path2
lub path3
jest również ścieżką bezwzględną, operacja łączenia odrzuca wszystkie wcześniej połączone ścieżki i resetuje do tej ścieżki bezwzględnej.
Ciągi o zerowej długości są pomijane ze połączonej ścieżki.
Jeśli path1
lub path2
nie jest odwołaniem do dysku (tj. "C:" lub "D:") i nie kończy się prawidłowym znakiem separatora zdefiniowanym w DirectorySeparatorChar, AltDirectorySeparatorCharlub VolumeSeparatorChar, DirectorySeparatorChar jest dołączany do path1
lub path2
przed łączeniem. Należy pamiętać, że jeśli path1
lub path2
kończy się znakiem separatora ścieżki, który nie jest odpowiedni dla platformy docelowej, metoda Combine
zachowuje oryginalny znak separatora ścieżki i dołącza obsługiwany znak. Poniższy przykład porównuje wynik w systemach Windows i Unix, gdy ukośnik odwrotny jest używany jako znak separatora ścieżki.
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
Jeśli path2
nie zawiera katalogu głównego (na przykład jeśli path2
nie zaczyna się od znaku separatora lub specyfikacji dysku), wynik jest łączeniem dwóch ścieżek, z pośrednim znakiem separatora. Jeśli path2
zawiera katalog główny, path2
zostanie zwrócony.
Parametry nie są analizowane, jeśli mają biały znak. W związku z tym jeśli path2
zawiera białe znaki (na przykład " \file.txt "), metoda Combine dołącza path2
do path1
.
Wersje .NET Framework i .NET Core starsze niż 2.1: nie wszystkie nieprawidłowe znaki dla nazw katalogów i plików są interpretowane jako niedopuszczalne przez metodę Combine
, ponieważ można użyć tych znaków do wyszukiwania symboli wieloznacznych. Na przykład, gdy Path.Combine("c:\\", "*.txt")
może być nieprawidłowa, jeśli chcesz utworzyć z niego plik, jest on prawidłowy jako ciąg wyszukiwania. W związku z tym metoda Combine
została pomyślnie zinterpretowana.
Zobacz też
Dotyczy
Combine(String, String, String, String)
- Źródło:
- Path.cs
- Źródło:
- Path.cs
- Źródło:
- Path.cs
Łączy cztery ciągi w ścieżkę.
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
Parametry
- path1
- String
Pierwsza ścieżka do połączenia.
- path2
- String
Druga ścieżka do połączenia.
- path3
- String
Trzecia ścieżka do połączenia.
- path4
- String
Czwarta ścieżka do połączenia.
Zwraca
Połączone ścieżki.
Wyjątki
Wersje programu .NET Framework i .NET Core starsze niż 2.1: path1
, path2
, path3
lub path4
zawiera jeden lub więcej nieprawidłowych znaków zdefiniowanych w GetInvalidPathChars().
path1
, path2
, path3
lub path4
jest null
.
Przykłady
Poniższy przykład łączy cztery ścieżki.
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)
Uwagi
path1
powinna być ścieżką bezwzględną (na przykład "d:\archives" lub "\\archives\public"). Jeśli jedna z kolejnych ścieżek jest również ścieżką bezwzględną, operacja łączenia odrzuca wszystkie wcześniej połączone ścieżki i resetuje do tej ścieżki bezwzględnej.
Ciągi o zerowej długości są pomijane ze połączonej ścieżki.
Jeśli path1
, path2
lub path3
nie jest odwołaniem do dysku (czyli "C:" lub "D:") i nie kończy się prawidłowym znakiem separatora zdefiniowanym w DirectorySeparatorChar, AltDirectorySeparatorCharlub VolumeSeparatorChar, DirectorySeparatorChar jest dołączany do niego przed połączeniem. Należy pamiętać, że jeśli path1
, path2
lub path3
kończy się znakiem separatora ścieżki, który nie jest odpowiedni dla platformy docelowej, metoda Combine
zachowuje oryginalny znak separatora ścieżki i dołącza obsługiwany znak. Poniższy przykład porównuje wynik w systemach Windows i Unix, gdy ukośnik odwrotny jest używany jako znak separatora ścieżki.
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\
Jeśli path2
nie zawiera katalogu głównego (na przykład jeśli path2
nie zaczyna się od znaku separatora lub specyfikacji dysku), wynik jest łączeniem dwóch ścieżek, z pośrednim znakiem separatora. Jeśli path2
zawiera katalog główny, path2
zostanie zwrócony.
Parametry nie są analizowane, jeśli mają biały znak. W związku z tym jeśli path2
zawiera białe znaki (na przykład " \file.txt "), metoda Combine dołącza path2
do path1
.
Wersje .NET Framework i .NET Core starsze niż 2.1: nie wszystkie nieprawidłowe znaki dla nazw katalogów i plików są interpretowane jako niedopuszczalne przez metodę Combine
, ponieważ można użyć tych znaków do wyszukiwania symboli wieloznacznych. Na przykład, gdy Path.Combine("c:\\", "*.txt")
może być nieprawidłowa, jeśli chcesz utworzyć z niego plik, jest on prawidłowy jako ciąg wyszukiwania. W związku z tym metoda Combine
została pomyślnie zinterpretowana.