Path.Join Método

Definição

Sobrecargas

Nome Description
Join(ReadOnlySpan<Char>, ReadOnlySpan<Char>)

Concatena dois componentes de caminho em um único caminho.

Join(ReadOnlySpan<Char>, ReadOnlySpan<Char>, ReadOnlySpan<Char>)

Concatena três componentes de caminho em um único caminho.

Join(ReadOnlySpan<Char>, ReadOnlySpan<Char>)

Concatena dois componentes de caminho em um único caminho.

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

Parâmetros

path1
ReadOnlySpan<Char>

Um intervalo de caracteres que contém o primeiro caminho a ser unido.

path2
ReadOnlySpan<Char>

Um intervalo de caracteres que contém o segundo caminho a ser unido.

Retornos

Os caminhos combinados.

Exemplos

O exemplo a seguir ilustra a diferença nos caminhos retornados pelos métodos e Path.Combine(String, String) pelos Path.Join(ReadOnlySpan<Char>, ReadOnlySpan<Char>) métodos. Quando a primeira cadeia de caracteres é um caminho totalmente qualificado que inclui uma unidade e um diretório raiz e o segundo é um caminho relativo do primeiro caminho, os dois métodos produzem resultados idênticos. Na segunda e terceira chamadas para o ShowPathInformation método, as cadeias de caracteres retornadas pelos dois métodos divergem. Na segunda chamada de método, o primeiro argumento de cadeia de caracteres é uma unidade, enquanto o segundo é um diretório raiz. O Join método concatena as duas cadeias de caracteres e preserva separadores de caminho duplicados. O Combine método abandona a unidade e retorna um diretório com raiz na unidade atual. Se a unidade atual do aplicativo for C:\ e a cadeia de caracteres for usada para acessar um arquivo ou arquivos no diretório, ela acessará C: em vez de D:. Por fim, como ambos os argumentos na terceira chamada têm ShowPathInformation raiz, o Join método simplesmente os acrescenta para criar um caminho de arquivo sem sentido, enquanto o Combine método descarta a primeira cadeia de caracteres e retorna a segunda. Usar essa cadeia de caracteres para acesso a arquivos pode dar ao aplicativo acesso não intencional a arquivos confidenciais.

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/'

Comentários

Esse método simplesmente concatena path e path2 adiciona um caractere separador de diretório entre os dois componentes de caminho se um ainda não estiver presente no final path1 ou no início de path2. Se o Length valor for zero path1 ou path2 igual a zero, o método retornará o outro caminho. Se o Length de ambos path1 e path2 for zero, o método retornará String.Empty.

Se path1 terminar em um caractere separador de caminho que não é apropriado para a plataforma de destino, o Join método preservará o caractere separador de caminho original e acrescentará o com suporte. Esse problema surge em caminhos embutidos em código que usam o caractere Windows barra invertida ("\"), que não é reconhecido como um separador de caminho em sistemas baseados em Unix. Para resolver essa questão, você pode:

Ao contrário do Combine método, o Join método não tenta raiz do caminho retornado. (Ou seja, se path2 for um caminho absoluto, o Join método não descartará path1 e retornará path2 como o Combine método faz.) O exemplo a seguir ilustra a diferença nos caminhos retornados pelos dois métodos. Se a origem for a entrada do path2 usuário, o Combine método possibilita que um usuário acesse um recurso do sistema de arquivos (como C:/Users/User1/Documents/Financial/ no caso do exemplo) que o aplicativo não pretendia tornar acessível.

Nem todos os caracteres inválidos para diretório e nomes de arquivo são interpretados como inaceitáveis pelo Join método, pois você pode usar esses caracteres para pesquisar caracteres curinga. Por exemplo, embora Path.Join("c:\\", "*.txt") possa ser inválido ao criar um arquivo, ele é válido como uma cadeia de caracteres de pesquisa. Portanto Join , o método o interpreta com êxito.

Confira também

Aplica-se a

Join(ReadOnlySpan<Char>, ReadOnlySpan<Char>, ReadOnlySpan<Char>)

Concatena três componentes de caminho em um único caminho.

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

Parâmetros

path1
ReadOnlySpan<Char>

Um intervalo de caracteres que contém o primeiro caminho a ser unido.

path2
ReadOnlySpan<Char>

Um intervalo de caracteres que contém o segundo caminho a ser unido.

path3
ReadOnlySpan<Char>

Um intervalo de caracteres que contém o terceiro caminho a ser unido.

Retornos

O caminho concatenado.

Exemplos

O exemplo a seguir ilustra a diferença nos caminhos retornados pelos métodos e Path.Combine(String, String, String) pelos Path.Join(ReadOnlySpan<Char>, ReadOnlySpan<Char>, ReadOnlySpan<Char>) métodos. Quando a primeira cadeia de caracteres é um caminho totalmente qualificado que inclui uma unidade e diretório raiz e o segundo é um caminho relativo do primeiro caminho, os dois métodos produzem resultados idênticos. Na segunda e terceira chamadas para o ShowPathInformation método, as cadeias de caracteres retornadas pelos dois métodos divergem. Na segunda chamada de método, o primeiro argumento de cadeia de caracteres é uma unidade, enquanto o segundo é um diretório raiz. O Join método concatena as duas cadeias de caracteres e preserva separadores de caminho duplicados. Uma chamada para o GetFullPath método eliminaria a duplicação. O Combine método abandona a unidade e retorna um diretório com raiz na unidade atual. Se a unidade atual do aplicativo for C:\ e a cadeia de caracteres for usada para acessar um arquivo ou arquivos no diretório, ela acessará C: em vez de D:. Por fim, como o argumento final na terceira chamada está ShowPathInformation enraizado, o Join método simplesmente o acrescenta aos dois primeiros argumentos para criar um caminho de arquivo sem sentido, enquanto o Combine método descarta as duas primeiras cadeias de caracteres e retorna a terceira. Usar essa cadeia de caracteres para acesso a arquivos pode dar ao aplicativo acesso não intencional a arquivos confidenciais.

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'

Comentários

Esse método simplesmente concatena pathe path2path3 adiciona um caractere separador de diretório entre qualquer um dos componentes de caminho se ainda não estiver presente. Se qualquer Length um dos path1path2argumentos ou path3 argumentos for zero, o método concatena os argumentos restantes. Se o ReadOnlySpan<T>.Length de todos os componentes for zero, o método retornará String.Empty.

Se path1 ou path2 termina em um caractere separador de caminho que não é apropriado para a plataforma de destino, o Join método preserva o caractere separador de caminho original e acrescenta o com suporte. Esse problema surge em caminhos embutidos em código que usam o caractere Windows barra invertida ("\"), que não é reconhecido como um separador de caminho em sistemas baseados em Unix. Para resolver essa questão, você pode:

Ao contrário do Combine método, o Join método não tenta raiz do caminho retornado. (Ou seja, se path2 ou path3 for um caminho absoluto, o Join método não descartará os caminhos anteriores como o Combine método faz.)

Nem todos os caracteres inválidos para diretório e nomes de arquivo são interpretados como inaceitáveis pelo Join método, pois você pode usar esses caracteres para pesquisar caracteres curinga. Por exemplo, embora Path.Join("c:\\", "temp", "*.txt") possa ser inválido ao criar um arquivo, ele é válido como uma cadeia de caracteres de pesquisa. Portanto Join , o método o interpreta com êxito.

Confira também

Aplica-se a