Path.Combine Metoda

Definicja

Łączy ciągi w ścieżkę.

Przeciążenia

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 Combine metody jest użycie Join metod lub TryJoin .

Ważne

Ta metoda zakłada, że pierwszy argument jest ścieżką bezwzględną i że następujący argument 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 or TryJoin .

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

.NET Framework i .NET Core starsze niż 2.1: jeden z ciągów w tablicy zawiera co najmniej jeden z nieprawidłowych znaków zdefiniowanych w pliku 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ę rozpoczynając od tej ścieżki bezwzględnej, odrzucając wszystkie poprzednie połączone ścieżki.

Jeśli jakikolwiek element w paths obiekcie , ale ostatni nie jest dyskiem i nie kończy się znakiem DirectorySeparatorChar lub AltDirectorySeparatorChar , Combine metoda dodaje DirectorySeparatorChar znak 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, Combine metoda zachowuje oryginalny znak separatora ścieżki i dołącza obsługiwany znak. Poniższy przykład porównuje wynik w systemach z systemami 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łe znaki.

.NET Framework i .NET Core w wersjach starszych 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 znaków wieloznacznych. Jeśli na przykład Path.Combine("c:\\", "*.txt") plik został utworzony, może być nieprawidłowy, jest on prawidłowy jako ciąg wyszukiwania. W związku z Combine tym metoda 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 wartość path2.

Wyjątki

.NET Framework i .NET Core w wersji starszej niż 2.1: path1 lub path2 zawiera jeden lub więcej nieprawidłowych znaków zdefiniowanych w pliku GetInvalidPathChars().

path1 lub path2 to null.

Przykłady

W poniższym przykładzie pokazano użycie Combine metody 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 (czyli "C:" lub "D:") i nie kończy się prawidłowym znakiem separatora zdefiniowanym w DirectorySeparatorCharobiekcie , AltDirectorySeparatorCharlub VolumeSeparatorChar, DirectorySeparatorChar jest dołączany do path1 przed łączeniem. Należy pamiętać, że jeśli path1 kończy się znakiem separatora ścieżki, który nie jest odpowiedni dla platformy docelowej, Combine metoda zachowuje oryginalny znak separatora ścieżki i dołącza obsługiwany znak. Poniższy przykład porównuje wynik w systemach z systemami 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 rozpoczyna się od znaku separatora lub specyfikacji dysku), wynik jest łączeniem dwóch ścieżek z interweniowaniem separatora. Jeśli path2 element zawiera katalog główny, path2 zostanie zwrócony.

Parametry nie są analizowane, jeśli mają białe znaki. W związku z tym, jeśli path2 zawiera białe znaki (na przykład " \file.txt "), Combine metoda dołącza path2 do path1 metody zamiast zwracać tylko path2.

.NET Framework i .NET Core w wersjach starszych 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 znaków wieloznacznych. Jeśli na przykład Path.Combine("c:\\", "*.txt") plik został utworzony, może być nieprawidłowy, jest on prawidłowy jako ciąg wyszukiwania. W związku z Combine tym metoda 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 pliku GetInvalidPathChars().

path1, path2lub path3 to 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 (czyli "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, Combine metoda zachowuje oryginalny znak separatora ścieżki i dołącza obsługiwany znak. Poniższy przykład porównuje wynik w systemach z systemami 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 rozpoczyna się od znaku separatora lub specyfikacji dysku), wynik jest łączeniem dwóch ścieżek z interweniowaniem separatora. Jeśli path2 element zawiera katalog główny, path2 zostanie zwrócony.

Parametry nie są analizowane, jeśli mają białe znaki. W związku z tym, jeśli path2 zawiera białe znaki (na przykład " \file.txt "), Combine metoda dołącza path2 do path1.

.NET Framework i .NET Core w wersjach starszych 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 znaków wieloznacznych. Jeśli na przykład Path.Combine("c:\\", "*.txt") plik został utworzony, może być nieprawidłowy, jest on prawidłowy jako ciąg wyszukiwania. W związku z Combine tym metoda 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

.NET Framework i .NET Core starsze niż 2.1: path1, path2, path3lub path4 zawiera jeden lub więcej nieprawidłowych znaków zdefiniowanych w pliku GetInvalidPathChars().

path1, path2, path3lub path4 to 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 (tj. "C:" lub "D:") i nie kończy się prawidłowym znakiem separatora zdefiniowanym w DirectorySeparatorChar, AltDirectorySeparatorCharlub VolumeSeparatorChar, DirectorySeparatorChar jest dołączany do niego przed łączeniem. Należy pamiętać, że jeśli path1element , path2lub path3 kończy się znakiem separatora ścieżki, który nie jest odpowiedni dla platformy docelowej, Combine metoda zachowuje oryginalny znak separatora ścieżki i dołącza obsługiwany znak. Poniższy przykład porównuje wynik w systemach z systemami 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 rozpoczyna się od znaku separatora lub specyfikacji dysku), wynik jest łączeniem dwóch ścieżek z interweniowaniem separatora. Jeśli path2 element zawiera katalog główny, path2 zostanie zwrócony.

Parametry nie są analizowane, jeśli mają białe znaki. W związku z tym, jeśli path2 zawiera białe znaki (na przykład " \file.txt "), Combine metoda dołącza path2 do path1.

.NET Framework i .NET Core w wersjach starszych 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 znaków wieloznacznych. Jeśli na przykład Path.Combine("c:\\", "*.txt") plik został utworzony, może być nieprawidłowy, jest on prawidłowy jako ciąg wyszukiwania. W związku z Combine tym metoda została pomyślnie zinterpretowana.

Zobacz też

Dotyczy