Udostępnij za pośrednictwem


Path.Combine Metoda

Definicja

Łą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:^*&)(_=@#'\\^&#2.*(.txt";
   String^ path5 = "";
   String^ path6 = nullptr;
   CombinePaths( path1, path2 );
   CombinePaths( path1, path3 );
   CombinePaths( path3, path2 );
   CombinePaths( path4, path2 );
   CombinePaths( path5, path2 );
   CombinePaths( path6, path2 );
}
using System;
using System.IO;

public class ChangeExtensionTest
{
    public static void Main()
    {
        string path1 = "c:\\temp";
        string path2 = "subdir\\file.txt";
        string path3 = "c:\\temp.txt";
        string path4 = "c:^*&)(_=@#'\\^&#2.*(.txt";
        string path5 = "";

        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:^*&)(_=@#'\^&#2.*(.txt' and 'subdir\file.txt', the result is:
// 'c:^*&)(_=@#'\^&#2.*(.txt\subdir\file.txt'
//
// When you combine '' and 'subdir\file.txt', the result is:
// 'subdir\file.txt'
Imports System.IO

Public Class ChangeExtensionTest
    
    
    Public Shared Sub Main()
        Dim path1 As String = "c:\temp"
        Dim path2 As String = "subdir\file.txt"
        Dim path3 As String = "c:\temp.txt"
        Dim path4 As String = "c:^*&)(_=@#'\\^&#2.*(.txt"
        Dim path5 As String = ""
        Dim path6 As String = Nothing

        CombinePaths(path1, path2)
        CombinePaths(path1, path3)
        CombinePaths(path3, path2)
        CombinePaths(path4, path2)
        CombinePaths(path5, path2)
        CombinePaths(path6, path2)
    End Sub

    Private Shared Sub CombinePaths(p1 As String, p2 As String)
        
        Try
            Dim combination As String = Path.Combine(p1, p2)
            
            Console.WriteLine("When you combine '{0}' and '{1}', the result is: {2}'{3}'", p1, p2, Environment.NewLine, combination)
        Catch e As Exception
            If p1 = Nothing Then
                p1 = "Nothing"
            End If
            If p2 = Nothing Then
                p2 = "Nothing"
            End If
            Console.WriteLine("You cannot combine '{0}' and '{1}' because: {2}{3}", p1, p2, Environment.NewLine, e.Message)
        End Try
        
        Console.WriteLine()
    End Sub
End Class
' This code produces output similar to the following:
'
' When you combine 'c:\temp' and 'subdir\file.txt', the result is: 
' 'c:\temp\subdir\file.txt'
' 
' When you combine 'c:\temp' and 'c:\temp.txt', the result is: 
' 'c:\temp.txt'
' 
' When you combine 'c:\temp.txt' and 'subdir\file.txt', the result is: 
' 'c:\temp.txt\subdir\file.txt'
' 
' When you combine 'c:^*&)(_=@#'\^&#2.*(.txt' and 'subdir\file.txt', the result is: 
' 'c:^*&)(_=@#'\^&#2.*(.txt\subdir\file.txt'
' 
' When you combine '' and 'subdir\file.txt', the result is: 
' 'subdir\file.txt'
' 
' You cannot combine '' and 'subdir\file.txt' because: 
' Value cannot be null.
' Parameter name: path1

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ż

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, path2lub path3 zawiera jeden lub więcej nieprawidłowych znaków zdefiniowanych w GetInvalidPathChars().

path1, path2lub 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, path3lub path4 zawiera jeden lub więcej nieprawidłowych znaków zdefiniowanych w GetInvalidPathChars().

path1, path2, path3lub 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, path2lub 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, path2lub 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.

Zobacz też

Dotyczy