Path.Join Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Überlädt
Join(String, String, String, String) |
Verkettet vier Pfade zu einem einzelnen Pfad. |
Join(ReadOnlySpan<Char>, ReadOnlySpan<Char>, ReadOnlySpan<Char>, ReadOnlySpan<Char>) |
Verkettet vier Pfadkomponenten zu einem einzelnen Pfad. |
Join(String, String, String) |
Verkettet drei Pfade zu einem einzelnen Pfad. |
Join(String[]) |
Verkettet ein Array von Pfaden zu einem einzelnen Pfad. |
Join(String, String) |
Verkettet zwei Pfade zu einem einzelnen Pfad. |
Join(ReadOnlySpan<Char>, ReadOnlySpan<Char>) |
Verkettet zwei Pfadkomponenten zu einem einzigen Pfad. |
Join(ReadOnlySpan<Char>, ReadOnlySpan<Char>, ReadOnlySpan<Char>) |
Verkettet drei Pfadkomponenten zu einem einzigen Pfad. |
Join(String, String, String, String)
Verkettet vier Pfade zu einem einzelnen Pfad.
public:
static System::String ^ Join(System::String ^ path1, System::String ^ path2, System::String ^ path3, System::String ^ path4);
public static string Join (string? path1, string? path2, string? path3, string? path4);
static member Join : string * string * string * string -> string
Public Shared Function Join (path1 As String, path2 As String, path3 As String, path4 As String) As String
Parameter
- path1
- String
Der erste Pfad für die Verknüpfung.
- path2
- String
Der zweite Pfad für die Verknüpfung.
- path3
- String
Der dritte Pfad für die Verknüpfung.
- path4
- String
Der vierte Pfad für die Verknüpfung.
Gibt zurück
Der verkettete Pfad.
Hinweise
Diese Methode verketten einfach path
, und path4
fügt ein Verzeichnistrennzeichen zwischen allen Pfadkomponenten hinzu, path2``path3
wenn eine nicht bereits vorhanden ist. Wenn die Länge eines von path1
, path3
oder path2``path4
Argument null ist, verketten die Methode die verbleibenden Argumente. Wenn die Länge der resultierenden verketteten Zeichenfolge null ist, gibt die Methode zurück String.Empty.
Wenn path1
oder path2
path3
endet in einem Pfadtrennzeichen, das nicht für die Zielplattform geeignet ist, behält die Join
Methode das ursprüngliche Pfadtrennzeichen bei und fügt das unterstützte Zeichen an. Dieses Problem tritt in hart codierten Pfaden auf, die das Windows Backslash ("\") -Zeichen verwenden, das nicht als Pfadtrennzeichen auf Unix-basierten Systemen erkannt wird. Um dieses Problem zu umgehen, können Sie Folgendes ausführen:
Rufen Sie den Wert der Path.DirectorySeparatorChar Eigenschaft ab, anstatt ein Verzeichnistrennzeichen zu codieren.
Verwenden Sie einen Schrägstrich ("/") als Verzeichnistrennzeichen. Dieses Zeichen wird von der Eigenschaft auf Unix-basierten Systemen und von der Path.DirectorySeparatorChar Path.AltDirectorySeparatorChar Eigenschaft auf Windows Systemen zurückgegeben.
Combine Im Gegensatz zur Methode versucht die Join Methode nicht, den zurückgegebenen Pfad zu stammen. (Das heißt, wenn path2
oder path2
path3
ein absoluter Pfad ist, verwerfen die Join
Methode die vorherigen Pfade nicht wie die Combine Methode.
Nicht alle ungültigen Zeichen für Verzeichnis- und Dateinamen werden von der Join
Methode als unannehmbar interpretiert, da Sie diese Zeichen für Suchhalterzeichen verwenden können. Wenn sie beispielsweise beim Path.Join("c:\\", "temp", "*.txt")
Erstellen einer Datei ungültig sein können, ist sie als Suchzeichenfolge gültig. Die Join
Methode interpretiert die Methode daher erfolgreich.
Gilt für:
Join(ReadOnlySpan<Char>, ReadOnlySpan<Char>, ReadOnlySpan<Char>, ReadOnlySpan<Char>)
Verkettet vier Pfadkomponenten zu einem einzelnen Pfad.
public:
static System::String ^ Join(ReadOnlySpan<char> path1, ReadOnlySpan<char> path2, ReadOnlySpan<char> path3, ReadOnlySpan<char> path4);
public static string Join (ReadOnlySpan<char> path1, ReadOnlySpan<char> path2, ReadOnlySpan<char> path3, ReadOnlySpan<char> path4);
static member Join : ReadOnlySpan<char> * ReadOnlySpan<char> * ReadOnlySpan<char> * ReadOnlySpan<char> -> string
Public Shared Function Join (path1 As ReadOnlySpan(Of Char), path2 As ReadOnlySpan(Of Char), path3 As ReadOnlySpan(Of Char), path4 As ReadOnlySpan(Of Char)) As String
Parameter
- path1
- ReadOnlySpan<Char>
Eine Zeichenspanne, die den ersten Pfad für die Verknüpfung enthält.
- path2
- ReadOnlySpan<Char>
Eine Zeichenspanne, die den zweiten Pfad für die Verknüpfung enthält.
- path3
- ReadOnlySpan<Char>
Eine Zeichenspanne, die den dritten Pfad für die Verknüpfung enthält.
- path4
- ReadOnlySpan<Char>
Eine Zeichenspanne, die den vierten zu verknüpfenden Pfad enthält.
Gibt zurück
Der verkettete Pfad.
Hinweise
Diese Methode verketten einfach path
, und path4
fügt ein Verzeichnistrennzeichen zwischen allen Pfadkomponenten hinzu, path2``path3
wenn eine nicht bereits vorhanden ist. Wenn eine Length von path1
, path3
path4
oder path2
argument null ist, verketten die Methode die verbleibenden Argumente. Wenn die ReadOnlySpan<T>.Length Komponenten null sind, gibt die Methode zurück String.Empty.
Wenn path1
oder path2
path3
endet in einem Pfadtrennzeichen, das nicht für die Zielplattform geeignet ist, behält die Join
Methode das ursprüngliche Pfadtrennzeichen bei und fügt das unterstützte Zeichen an. Dieses Problem tritt in hart codierten Pfaden auf, die das Windows Backslash ("\") -Zeichen verwenden, das nicht als Pfadtrennzeichen auf Unix-basierten Systemen erkannt wird. Um dieses Problem zu umgehen, können Sie Folgendes ausführen:
Rufen Sie den Wert der Path.DirectorySeparatorChar Eigenschaft ab, anstatt ein Verzeichnistrennzeichen zu codieren.
Verwenden Sie einen Schrägstrich ("/") als Verzeichnistrennzeichen. Dieses Zeichen wird von der Eigenschaft auf Unix-basierten Systemen und von der Path.DirectorySeparatorChar Path.AltDirectorySeparatorChar Eigenschaft auf Windows Systemen zurückgegeben.
Combine Im Gegensatz zur Methode versucht die Join Methode nicht, den zurückgegebenen Pfad zu stammen. (Das heißt, wenn path2
oder path2
path3
ein absoluter Pfad ist, verwerfen die Join
Methode die vorherigen Pfade nicht wie die Combine Methode.
Nicht alle ungültigen Zeichen für Verzeichnis- und Dateinamen werden von der Join
Methode als unannehmbar interpretiert, da Sie diese Zeichen für Suchhalterzeichen verwenden können. Wenn sie beispielsweise beim Path.Join("c:\\", "temp", "*.txt")
Erstellen einer Datei ungültig sein können, ist sie als Suchzeichenfolge gültig. Die Join
Methode interpretiert die Methode daher erfolgreich.
Gilt für:
Join(String, String, String)
Verkettet drei Pfade zu einem einzelnen Pfad.
public:
static System::String ^ Join(System::String ^ path1, System::String ^ path2, System::String ^ path3);
public static string Join (string? path1, string? path2, string? path3);
static member Join : string * string * string -> string
Public Shared Function Join (path1 As String, path2 As String, path3 As String) As String
Parameter
- path1
- String
Der erste Pfad für die Verknüpfung.
- path2
- String
Der zweite Pfad für die Verknüpfung.
- path3
- String
Der dritte Pfad für die Verknüpfung.
Gibt zurück
Der verkettete Pfad.
Hinweise
Diese Methode verketten einfach path
, und path3
fügt ein Verzeichnistrennzeichen zwischen allen Pfadkomponenten hinzu, path2
wenn eine nicht bereits vorhanden ist. Wenn die Länge eines der path1``path2
path3
Argumente null ist, verketten die Methode die verbleibenden Argumente. Wenn die Länge der resultierenden verketteten Zeichenfolge null ist, gibt die Methode zurück String.Empty.
Wenn path1
oder path2
endet in einem Pfadtrennzeichen, das nicht für die Zielplattform geeignet ist, behält die Join
Methode das ursprüngliche Pfadtrennzeichen bei und fügt das unterstützte Zeichen an. Dieses Problem tritt in hart codierten Pfaden auf, die das Windows Backslash ("\") -Zeichen verwenden, das nicht als Pfadtrennzeichen auf Unix-basierten Systemen erkannt wird. Um dieses Problem zu umgehen, können Sie Folgendes ausführen:
Rufen Sie den Wert der Path.DirectorySeparatorChar Eigenschaft ab, anstatt ein Verzeichnistrennzeichen zu codieren.
Verwenden Sie einen Schrägstrich ("/") als Verzeichnistrennzeichen. Dieses Zeichen wird von der Eigenschaft auf Unix-basierten Systemen und von der Path.DirectorySeparatorChar Path.AltDirectorySeparatorChar Eigenschaft auf Windows Systemen zurückgegeben.
Combine Im Gegensatz zur Methode versucht die Join Methode nicht, den zurückgegebenen Pfad zu stammen. (Das heißt, wenn path2
oder path2
ein absoluter Pfad ist, verwerfen die Join
Methode die vorherigen Pfade nicht wie die Combine Methode.
Nicht alle ungültigen Zeichen für Verzeichnis- und Dateinamen werden von der Join
Methode als unannehmbar interpretiert, da Sie diese Zeichen für Suchhalterzeichen verwenden können. Wenn sie beispielsweise beim Path.Join("c:\\", "temp", "*.txt")
Erstellen einer Datei ungültig sein können, ist sie als Suchzeichenfolge gültig. Die Join
Methode interpretiert die Methode daher erfolgreich.
Gilt für:
Join(String[])
Verkettet ein Array von Pfaden zu einem einzelnen Pfad.
public:
static System::String ^ Join(... cli::array <System::String ^> ^ paths);
public static string Join (params string?[] paths);
static member Join : string[] -> string
Public Shared Function Join (ParamArray paths As String()) As String
Parameter
- paths
- String[]
Ein Array von Pfaden.
Gibt zurück
Der verkettete Pfad.
Hinweise
Diese Methode verkettet einfach alle Zeichenfolgen und paths
fügt ein Verzeichnistrennzeichen zwischen einer der Pfadkomponenten hinzu, wenn noch nicht vorhanden ist. Wenn eine Length der Pfade null paths
ist, verkettet die Methode die verbleibenden Argumente. Wenn die resultierende Länge der verketteten Zeichenfolge null ist, gibt die Methode zurück String.Empty.
Wenn eine der Pfade in paths
, mit Ausnahme des letzten Pfads, in einem Pfadtrennzeichen endet, das nicht für die Zielplattform geeignet ist, behält die Join
Methode das ursprüngliche Pfadtrennzeichen bei und fügt das unterstützte Zeichen an. Dieses Problem tritt in hartcodierten Pfaden auf, die das Windows umgekehrten Schrägstrich ("\") verwenden, das nicht als Pfadtrennzeichen auf Unix-basierten Systemen erkannt wird. Um dieses Problem zu umgehen, können Sie Folgendes ausführen:
Rufen Sie den Wert der Path.DirectorySeparatorChar Eigenschaft ab, anstatt ein Verzeichnistrennzeichen zu codieren.
Verwenden Sie einen Schrägstrich ("/") als Verzeichnistrennzeichen. Dieses Zeichen wird von der Path.DirectorySeparatorChar Eigenschaft auf Unix-basierten Systemen und von der Path.AltDirectorySeparatorChar Eigenschaft auf Windows Systemen zurückgegeben.
Combine Im Gegensatz zur Methode versucht die Join Methode nicht, den zurückgegebenen Pfad zu stammen. (Das heißt, wenn eine der Pfade in paths
, mit Ausnahme des letzten Pfads, ein absoluter Pfad ist, verworfen die Join
Methode nicht die vorherigen Pfade, wie die Combine Methode ausgeführt wird.
Nicht alle ungültigen Zeichen für Verzeichnis- und Dateinamen werden von der Join
Methode als inakzeptabel interpretiert, da Sie diese Zeichen für Suchfeldzeichen verwenden können. Wenn sie beispielsweise Path.Join("c:\\", "temp", "*.txt")
beim Erstellen einer Datei ungültig sein können, ist sie als Suchzeichenfolge gültig. Die Join
Methode interpretiert sie daher erfolgreich.
Gilt für:
Join(String, String)
Verkettet zwei Pfade zu einem einzelnen Pfad.
public:
static System::String ^ Join(System::String ^ path1, System::String ^ path2);
public static string Join (string? path1, string? path2);
static member Join : string * string -> string
Public Shared Function Join (path1 As String, path2 As String) As String
Parameter
- path1
- String
Der erste Pfad für die Verknüpfung.
- path2
- String
Der zweite Pfad für die Verknüpfung.
Gibt zurück
Der verkettete Pfad.
Hinweise
Diese Methode verkettet path
einfach und path2
fügt ein Verzeichnistrennzeichen zwischen einer der Pfadkomponenten hinzu, wenn noch nicht vorhanden ist. Wenn die Länge eines path1
path2
oder null ist, verkettet die Methode das verbleibende Argument. Wenn die Länge der resultierenden verketteten Zeichenfolge null ist, gibt die Methode zurück String.Empty.
Wenn path1
es sich um ein Pfadtrennzeichen handelt, das nicht für die Zielplattform geeignet ist, behält die Join
Methode das ursprüngliche Pfadtrennzeichen bei und fügt das unterstützte Zeichen an. Dieses Problem tritt in hartcodierten Pfaden auf, die das Windows umgekehrten Schrägstrich ("\") verwenden, das nicht als Pfadtrennzeichen auf Unix-basierten Systemen erkannt wird. Um dieses Problem zu umgehen, können Sie Folgendes ausführen:
Rufen Sie den Wert der Path.DirectorySeparatorChar Eigenschaft ab, anstatt ein Verzeichnistrennzeichen zu codieren.
Verwenden Sie einen Schrägstrich ("/") als Verzeichnistrennzeichen. Dieses Zeichen wird von der Path.DirectorySeparatorChar Eigenschaft auf Unix-basierten Systemen und von der Path.AltDirectorySeparatorChar Eigenschaft auf Windows Systemen zurückgegeben.
Combine Im Gegensatz zur Methode versucht die Join Methode nicht, den zurückgegebenen Pfad zu stammen. (Wenn path2
es sich um einen absoluten Pfad handelt, verwirft die Join
Methode nicht die vorherigen Pfade wie die Combine Methode.
Nicht alle ungültigen Zeichen für Verzeichnis- und Dateinamen werden von der Join
Methode als inakzeptabel interpretiert, da Sie diese Zeichen für Suchfeldzeichen verwenden können. Wenn sie beispielsweise Path.Join("c:\\", "temp", "*.txt")
beim Erstellen einer Datei ungültig sein können, ist sie als Suchzeichenfolge gültig. Die Join
Methode interpretiert sie daher erfolgreich.
Gilt für:
Join(ReadOnlySpan<Char>, ReadOnlySpan<Char>)
Verkettet zwei Pfadkomponenten zu einem einzigen Pfad.
public:
static System::String ^ Join(ReadOnlySpan<char> path1, ReadOnlySpan<char> path2);
public static string Join (ReadOnlySpan<char> path1, ReadOnlySpan<char> path2);
static member Join : ReadOnlySpan<char> * ReadOnlySpan<char> -> string
Public Shared Function Join (path1 As ReadOnlySpan(Of Char), path2 As ReadOnlySpan(Of Char)) As String
Parameter
- path1
- ReadOnlySpan<Char>
Eine Zeichenspanne, die den ersten Pfad für die Verknüpfung enthält.
- path2
- ReadOnlySpan<Char>
Eine Zeichenspanne, die den zweiten Pfad für die Verknüpfung enthält.
Gibt zurück
Die kombinierten Pfade.
Beispiele
Im folgenden Beispiel wird der Unterschied in den von den Path.Join(ReadOnlySpan<Char>, ReadOnlySpan<Char>) Methoden Path.Combine(String, String) zurückgegebenen Pfaden veranschaulicht. Wenn die erste Zeichenfolge ein vollqualifizierter Pfad ist, der ein Laufwerk und ein Stammverzeichnis enthält und das zweite ein relativer Pfad vom ersten Pfad ist, erzeugen die beiden Methoden identische Ergebnisse. In den zweiten und dritten Aufrufen der ShowPathInformation
Methode unterscheiden sich die von den beiden Methoden zurückgegebenen Zeichenfolgen. Im zweiten Methodenaufruf ist das erste Zeichenfolgenargument ein Laufwerk, während die zweite ein gewurzeltes Verzeichnis ist. Die Join
Methode verkettet die beiden Zeichenfolgen und behält doppelte Pfadtrennzeichen bei. Die Combine
Methode verlässt das Laufwerk und gibt ein rootes Verzeichnis auf dem aktuellen Laufwerk zurück. Wenn das aktuelle Laufwerk der Anwendung C ist und\ die Zeichenfolge verwendet wird, um auf eine Datei oder Dateien im Verzeichnis zuzugreifen, würde er auf C: anstelle von D:zugreifen. Da beide Argumente im dritten Aufruf ShowPathInformation
verwurzelt sind, fügt die Join
Methode sie einfach an, um einen nichtsensischen Dateipfad zu erstellen, während die Combine
Methode die erste Zeichenfolge verwirft und die zweite zurückgibt. Die Verwendung dieser Zeichenfolge für den Dateizugriff könnte der Anwendung unbeabsichtigten Zugriff auf vertrauliche Dateien gewähren.
using System;
using System.IO;
class Program2
{
static void Main()
{
var path1 = "C:/Program Files/";
var path2 = "Utilities/SystemUtilities";
ShowPathInformation(path1, path2);
path1 = "C:/";
path2 = "/Program Files";
ShowPathInformation(path1, path2);
path1 = "C:/Users/Public/Documents/";
path2 = "C:/Users/User1/Documents/Financial/";
ShowPathInformation(path1, path2);
}
private static void ShowPathInformation(string path1, string path2)
{
var result = Path.Join(path1.AsSpan(), path2.AsSpan());
Console.WriteLine($"Concatenating '{path1}' and '{path2}'");
Console.WriteLine($" Path.Join: '{result}'");
Console.WriteLine($" Path.Combine: '{Path.Combine(path1, path2)}'");
}
}
// The example displays the following output if run on a Windows system:
// Concatenating 'C:/Program Files/' and 'Utilities/SystemUtilities'
// Path.Join: 'C:/Program Files/Utilities/SystemUtilities'
// Path.Combine: 'C:/Program Files/Utilities/SystemUtilities'
//
// Concatenating 'C:/' and '/Program Files'
// Path.Join: 'C://Program Files'
// Path.Combine: '/Program Files'
//
// Concatenating 'C:/Users/Public/Documents/' and 'C:/Users/User1/Documents/Financial/'
// Path.Join: 'C:/Users/Public/Documents/C:/Users/User1/Documents/Financial/'
// Path.Combine: 'C:/Users/User1/Documents/Financial/'
Imports System.IO
Module Example
Public Sub Main()
Dim path1 = "C:/Program Files/"
Dim path2 = "Utilities/SystemUtilities"
ShowPathInformation(path1, path2)
path1 = "C:/"
path2 = "/Program Files"
ShowPathInformation(path1, path2)
path1 = "C:/Users/Public/Documents/"
path2 = "C:/Users/User1/Documents/Financial/"
ShowPathInformation(path1, path2)
End Sub
Private Sub ShowPathInformation(path1 As String, path2 As String)
Dim result = Path.Join(path1.AsSpan(), path2.AsSpan())
Console.WriteLine($"Concatenating '{path1}' and '{path2}'")
Console.WriteLine($" Path.Join: '{result}'")
Console.WriteLine($" Path.Combine: '{Path.Combine(path1, path2)}'")
Console.WriteLine()
End Sub
End Module
' The example displays the following output if run on a Windows system:
' Concatenating 'C:/Program Files/' and 'Utilities/SystemUtilities'
' Path.Join: 'C:/Program Files/Utilities/SystemUtilities'
' Path.Combine: 'C:/Program Files/Utilities/SystemUtilities'
'
' Concatenating 'C:/' and '/Program Files'
' Path.Join: 'C:'Program Files'
' Path.Combine: '/Program Files'
'
' Concatenating 'C:/Users/Public/Documents/' and 'C:/Users/User1/Documents/Financial/'
' Path.Join: 'C:/Users/Public/Documents/C:/Users/User1/Documents/Financial/'
' Path.Combine: 'C:/Users/User1/Documents/Financial/'
Hinweise
Diese Methode verkettet path
einfach und path2
fügt ein Verzeichnistrennzeichen zwischen den beiden Pfadkomponenten hinzu, wenn eine nicht bereits am Ende path1
oder am Anfang vorhanden path2
ist. Wenn die Length Methode entweder path1
oder path2
null ist, gibt die Methode den anderen Pfad zurück. Wenn beides Length path1
und path2
null sind, gibt die Methode zurück String.Empty.
Wenn path1
es sich um ein Pfadtrennzeichen handelt, das nicht für die Zielplattform geeignet ist, behält die Join
Methode das ursprüngliche Pfadtrennzeichen bei und fügt das unterstützte Zeichen an. Dieses Problem tritt in hartcodierten Pfaden auf, die das Windows umgekehrten Schrägstrich ("\") verwenden, das nicht als Pfadtrennzeichen auf Unix-basierten Systemen erkannt wird. Um dieses Problem zu umgehen, können Sie Folgendes ausführen:
Rufen Sie den Wert der Path.DirectorySeparatorChar Eigenschaft ab, anstatt ein Verzeichnistrennzeichen zu codieren.
Verwenden Sie einen Schrägstrich ("/") als Verzeichnistrennzeichen. Dieses Zeichen wird von der Path.DirectorySeparatorChar Eigenschaft auf Unix-basierten Systemen und von der Path.AltDirectorySeparatorChar Eigenschaft auf Windows Systemen zurückgegeben.
Combine Im Gegensatz zur Methode versucht die Join Methode nicht, den zurückgegebenen Pfad zu stammen. (Wenn path2
es sich um einen absoluten Pfad handelt, verwerfen path1
und zurückgeben path2
die Join
Methode nicht wie die Combine Methode.) Im folgenden Beispiel wird der Unterschied in den von den beiden Methoden zurückgegebenen Pfaden veranschaulicht. Wenn die Quelle der path2
Benutzereingabe ist, ermöglicht die Combine Methode, dass ein Benutzer auf eine Dateisystemressource (z. B . C:/Users/User1/Documents/Financial/Financial/ im Fall des Beispiels) zugreifen kann, dass die Anwendung nicht darauf zugreifen möchte.
Nicht alle ungültigen Zeichen für Verzeichnis- und Dateinamen werden von der Join
Methode als inakzeptabel interpretiert, da Sie diese Zeichen für Suchfeldzeichen verwenden können. Wenn sie beispielsweise Path.Join("c:\\", "*.txt")
beim Erstellen einer Datei ungültig sein können, ist sie als Suchzeichenfolge gültig. Die Join
Methode interpretiert sie daher erfolgreich.
Siehe auch
Gilt für:
Join(ReadOnlySpan<Char>, ReadOnlySpan<Char>, ReadOnlySpan<Char>)
Verkettet drei Pfadkomponenten zu einem einzigen Pfad.
public:
static System::String ^ Join(ReadOnlySpan<char> path1, ReadOnlySpan<char> path2, ReadOnlySpan<char> path3);
public static string Join (ReadOnlySpan<char> path1, ReadOnlySpan<char> path2, ReadOnlySpan<char> path3);
static member Join : ReadOnlySpan<char> * ReadOnlySpan<char> * ReadOnlySpan<char> -> string
Public Shared Function Join (path1 As ReadOnlySpan(Of Char), path2 As ReadOnlySpan(Of Char), path3 As ReadOnlySpan(Of Char)) As String
Parameter
- path1
- ReadOnlySpan<Char>
Eine Zeichenspanne, die den ersten Pfad für die Verknüpfung enthält.
- path2
- ReadOnlySpan<Char>
Eine Zeichenspanne, die den zweiten Pfad für die Verknüpfung enthält.
- path3
- ReadOnlySpan<Char>
Eine Zeichenspanne, die den dritten Pfad für die Verknüpfung enthält.
Gibt zurück
Der verkettete Pfad.
Beispiele
Im folgenden Beispiel wird der Unterschied in den von den Path.Join(ReadOnlySpan<Char>, ReadOnlySpan<Char>, ReadOnlySpan<Char>) Methoden Path.Combine(String, String, String) zurückgegebenen Pfaden veranschaulicht. Wenn die erste Zeichenfolge ein vollqualifizierter Pfad ist, der ein Laufwerk und ein Stammverzeichnis enthält und das zweite ein relativer Pfad vom ersten Pfad ist, erzeugen die beiden Methoden identische Ergebnisse. In den zweiten und dritten Aufrufen der ShowPathInformation
Methode unterscheiden sich die von den beiden Methoden zurückgegebenen Zeichenfolgen. Im zweiten Methodenaufruf ist das erste Zeichenfolgenargument ein Laufwerk, während die zweite ein gewurzeltes Verzeichnis ist. Die Join
Methode verkettet die beiden Zeichenfolgen und behält doppelte Pfadtrennzeichen bei. Ein Aufruf der GetFullPath Methode würde die Duplizierung beseitigen. Die Combine
Methode verlässt das Laufwerk und gibt ein root-Verzeichnis auf dem aktuellen Laufwerk zurück. Wenn das aktuelle Laufwerk der Anwendung C ist: und die Zeichenfolge wird verwendet, um auf eine Datei oder Dateien im Verzeichnis zuzugreifen, würde sie auf C zugreifen:\ anstelle von D:. Schließlich fügt die Methode das endgültige Argument im dritten Aufruf ShowPathInformation
zurück, und die Methode fügt sie einfach an die ersten beiden Argumente an, um einen nichtsischen Dateipfad zu erstellen, während die Join
Combine
Methode die ersten beiden Zeichenfolgen verworfen und den dritten zurückgibt. Die Verwendung dieser Zeichenfolge für den Dateizugriff könnte der Anwendung unbeabsichtigten Zugriff auf vertrauliche Dateien geben.
using System;
using System.IO;
class Program3
{
static void Main()
{
ShowPathInformation("C:/", "users/user1/documents", "letters");
ShowPathInformation("D:/", "/users/user1/documents", "letters");
ShowPathInformation("D:/", "users/user1/documents", "C:/users/user1/documents/data");
}
private static void ShowPathInformation(string path1, string path2, string path3)
{
Console.WriteLine($"Concatenating '{path1}', '{path2}', and '{path3}'");
Console.WriteLine($" Path.Join: '{Path.Join(path1, path2, path3)}'");
Console.WriteLine($" Path.Combine: '{Path.Combine(path1, path2, path3)}'");
Console.WriteLine($" {Path.GetFullPath(Path.Join(path1, path2, path3))}");
}
}
// The example displays the following output if run on a Windows system:
// Concatenating 'C:/', 'users/user1/documents', and 'letters'
// Path.Join: 'C:/users/user1/documents\letters'
// Path.Combine: 'C:/users/user1/documents\letters'
// C:\users\user1\documents\letters
// Concatenating 'D:/', '/users/user1/documents', and 'letters'
// Path.Join: 'D://users/user1/documents\letters'
// Path.Combine: '/users/user1/documents\letters'
// D:\users\user1\documents\letters
// Concatenating 'D:/', 'users/user1/documents', and 'C:/users/user1/documents/data'
// Path.Join: 'D:/users/user1/documents\C:/users/user1/documents/data'
// Path.Combine: 'C:/users/user1/documents/data'
// D:\users\user1\documents\C:\users\user1\documents\data
Imports System.IO
Module Program
Public Sub Main()
Dim path1 As String = "C:/"
Dim path2 As String = "users/user1/documents"
Dim path3 As String = "letters"
ShowPathInformation(path1, path2, path3)
path1 = "D:/"
path2 = "/users/user1/documents"
path3 = "letters"
ShowPathInformation(path1, path2, path3)
path1 = "D:/"
path2 = "users/user1/documents"
path3 = "C:/users/user1/documents/data"
ShowPathInformation(path1, path2, path3)
End Sub
Private Sub ShowPathInformation(path1 As String, path2 As String, path3 As String)
Dim result = Path.Join(path1.AsSpan(), path2.AsSpan(), path3.AsSpan())
Console.WriteLine($"Concatenating '{path1}, '{path2}', and `{path3}'")
Console.WriteLine($" Path.Join: '{result}'")
Console.WriteLine($" Path.Combine: '{Path.Combine(path1, path2, path3)}'")
End Sub
End Module
' The example displays the following output if run on a Windows system:
' Concatenating 'C:/, 'users/user1/documents', and `letters'
' Path.Join: 'C:/users/user1/documents\letters'
' Path.Combine: 'C:/users/user1/documents\letters'
'
' Concatenating 'D:/, '/users/user1/documents', and `letters'
' Path.Join: 'D:'users/user1/documents\letters'
' Path.Combine: '/users/user1/documents\letters'
'
' Concatenating 'D:/, 'users/user1/documents', and `C:/users/user1/documents/data'
' Path.Join: 'D:/users/user1/documents\C:/users/user1/documents/data'
' Path.Combine: 'C:/users/user1/documents/data'
Hinweise
Diese Methode verkettet path
einfach , path2
und path3
fügt ein Verzeichnistrennzeichen zwischen einer der Pfadkomponenten hinzu, wenn noch nicht vorhanden ist. Wenn eines Length von path1
, path2
oder path3
Argumenten null ist, verkettet die Methode die verbleibenden Argumente. Wenn die ReadOnlySpan<T>.Length Komponenten null sind, gibt die Methode zurück String.Empty.
Wenn path1
oder path2
endet ein Pfadtrennzeichen, das nicht für die Zielplattform geeignet ist, behält die Join
Methode das ursprüngliche Pfadtrennzeichen bei und fügt das unterstützte Zeichen an. Dieses Problem tritt in hartcodierten Pfaden auf, die das Windows umgekehrten Schrägstrich ("\") verwenden, das nicht als Pfadtrennzeichen auf Unix-basierten Systemen erkannt wird. Um dieses Problem zu umgehen, können Sie Folgendes ausführen:
Rufen Sie den Wert der Path.DirectorySeparatorChar Eigenschaft ab, anstatt ein Verzeichnistrennzeichen zu codieren.
Verwenden Sie einen Schrägstrich ("/") als Verzeichnistrennzeichen. Dieses Zeichen wird von der Path.DirectorySeparatorChar Eigenschaft auf Unix-basierten Systemen und von der Path.AltDirectorySeparatorChar Eigenschaft auf Windows Systemen zurückgegeben.
Combine Im Gegensatz zur Methode versucht die Join Methode nicht, den zurückgegebenen Pfad zu stammen. (Wenn path2
die Methode ein absoluter Pfad ist oder path2
ein absoluter Pfad ist, verwirft die Join
Methode nicht die vorherigen Pfade wie die Combine Methode.
Nicht alle ungültigen Zeichen für Verzeichnis- und Dateinamen werden von der Join
Methode als inakzeptabel interpretiert, da Sie diese Zeichen für Suchfeldzeichen verwenden können. Wenn sie beispielsweise Path.Join("c:\\", "temp", "*.txt")
beim Erstellen einer Datei ungültig sein können, ist sie als Suchzeichenfolge gültig. Die Join
Methode interpretiert sie daher erfolgreich.