Path.Combine Método

Definição

Combina cordas num caminho.

Sobrecargas

Name Description
Combine(String[])

Combina uma matriz de cordas num caminho.

Combine(String, String)

Combina duas cordas num caminho.

Combine(String, String, String)

Combina três cordas num caminho.

Combine(String, String, String, String)

Combina quatro cordas num caminho.

Observações

Este método destina-se a concatenar cadeias individuais numa única cadeia que representa um caminho de ficheiro. No entanto, se um argumento diferente do primeiro contiver um caminho enraizado, quaisquer componentes de caminho anteriores são ignorados, e a cadeia retornada começa com esse componente de caminho enraizado. Como alternativa ao método Combine, considere usar os métodos Join ou TryJoin (não disponíveis no .NET Framework).

Importante

Este método assume que o primeiro argumento é um caminho absoluto e que o argumento ou argumentos seguintes são caminhos relativos. Se isso não for o caso, e particularmente se quaisquer argumentos subsequentes forem strings introduzidas pelo utilizador, chame o Join método ou TryJoin em vez disso.

Combine(String[])

Combina uma matriz de cordas num caminho.

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

Parâmetros

paths
String[]

Uma variedade de partes do caminho.

Devoluções

Os caminhos combinados.

Exceções

.NET Framework e versões .NET Core anteriores à 2.1: Uma das strings no array contém um ou mais dos caracteres inválidos definidos em GetInvalidPathChars().

Uma das cadeias do array é null.

Exemplos

O exemplo seguinte combina um array de cadeias num caminho.

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)

Observações

paths Deve ser um array das partes do caminho a combinar. Se um dos caminhos subsequentes for um caminho absoluto, então a operação de combinação reinicia a partir desse caminho absoluto, descartando todos os caminhos combinados anteriores.

Se qualquer elemento em paths exceto o último não for um drive e não terminar nem com o DirectorySeparatorChar ou o AltDirectorySeparatorChar caractere, o Combine método adiciona um DirectorySeparatorChar carácter entre esse elemento e o seguinte. Note que, se o elemento terminar num carácter separador de caminho que não é apropriado para a plataforma de destino, o Combine método preserva o carácter separador de caminho original e adiciona um suportado. O exemplo seguinte compara o resultado em sistemas Windows e baseados em Unix quando a barra inversa é usada como um carácter separador de caminhos.

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

As cordas de comprimento zero são omitidas do caminho combinado.

Os parâmetros não são analisados se tiverem espaço em branco.

.NET Framework e versões .NET Core anteriores à 2.1: Nem todos os caracteres inválidos para nomes de diretórios e ficheiros são interpretados como inaceitáveis pelo método Combine, porque pode usar estes caracteres para caracteres curinga de pesquisa. Por exemplo, embora Path.Combine("c:\\", "*.txt") possa ser inválido se criar um ficheiro a partir dele, é válido como cadeia de pesquisa. Por isso, é interpretado com sucesso pelo Combine método.

Ver também

Aplica-se a

Combine(String, String)

Combina duas cordas num caminho.

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

Parâmetros

path1
String

O primeiro caminho para combinar.

path2
String

O segundo caminho para combinar.

Devoluções

Os caminhos combinados. Se um dos caminhos especificados for uma cadeia de comprimento zero, este método devolve o outro caminho. Se path2 contém um caminho absoluto, este método devolve path2.

Exceções

.NET Framework e versões .NET Core anteriores à 2.1: path1 ou path2 contém um ou mais dos caracteres inválidos definidos em GetInvalidPathChars().

path1 ou path2 é null.

Exemplos

O exemplo seguinte demonstra o uso do método Combine em Windows.

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

Observações

Se path1 não for uma referência de drive (ou seja, "C:" ou "D:") e não terminar com um carácter separador válido conforme definido em DirectorySeparatorChar, AltDirectorySeparatorChar, ou VolumeSeparatorChar, DirectorySeparatorChar é acrescentado antes path1 da concatenação. Note que, se path1 terminar num carácter separador de caminho que não é apropriado para a plataforma de destino, o Combine método preserva o carácter separador de caminho original e adiciona um suportado. O exemplo seguinte compara o resultado em sistemas Windows e baseados em Unix quando a barra inversa é usada como um carácter separador de caminhos.

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

Se path2 não incluir uma raiz (por exemplo, se path2 não começar com um carácter separador ou uma especificação de unidade), o resultado é uma concatenação dos dois caminhos, com um carácter separador intermediário. Se path2 inclui uma raiz, path2 é devolvido.

Os parâmetros não são analisados se tiverem espaço em branco. Portanto, se path2 incluir espaço em branco (por exemplo, " \file.txt "), o Combine método acrescenta path2 a path1 em vez de devolver apenas path2.

.NET Framework e versões .NET Core anteriores à 2.1: Nem todos os caracteres inválidos para nomes de diretórios e ficheiros são interpretados como inaceitáveis pelo método Combine, porque pode usar estes caracteres para caracteres curinga de pesquisa. Por exemplo, embora Path.Combine("c:\\", "*.txt") possa ser inválido se criar um ficheiro a partir dele, é válido como cadeia de pesquisa. Por isso, é interpretado com sucesso pelo Combine método.

Para uma lista de tarefas comuns de E/S, consulte Tarefas Comuns de E/S.

Ver também

Aplica-se a

Combine(String, String, String)

Combina três cordas num caminho.

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

Parâmetros

path1
String

O primeiro caminho para combinar.

path2
String

O segundo caminho para combinar.

path3
String

O terceiro caminho para combinar.

Devoluções

Os caminhos combinados.

Exceções

.NET Framework e .NET Core versões anteriores à 2.1: path1, path2 ou path3 contém um ou mais dos caracteres inválidos definidos em GetInvalidPathChars().

path1, path2, ou path3 é null.

Exemplos

O exemplo seguinte combina três caminhos.

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)

Observações

path1 deve ser um caminho absoluto (por exemplo, "d:\arquivos" ou "\\arquivos\público"). Se path2 ou path3 também for um caminho absoluto, a operação de combinar descarta todos os caminhos previamente combinados e reinicia para esse caminho absoluto.

As cordas de comprimento zero são omitidas do caminho combinado.

Se path1 ou não for uma referência de disco (ou seja, "C:" ou "D:") e não terminar com um carácter separador válido conforme definido em DirectorySeparatorChar, AltDirectorySeparatorChar, ou VolumeSeparatorChar, DirectorySeparatorChar é acrescentado a path1 ou path2 antes da concatenaçãopath2. Note que, se path1 ou path2 terminar num carácter separador de caminho que não é apropriado para a plataforma de destino, o Combine método preserva o carácter separador de caminho original e acrescenta um suportado. O exemplo seguinte compara o resultado em sistemas Windows e baseados em Unix quando a barra inversa é usada como um carácter separador de caminhos.

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

Se path2 não incluir uma raiz (por exemplo, se path2 não começar com um carácter separador ou uma especificação de unidade), o resultado é uma concatenação dos dois caminhos, com um carácter separador intermediário. Se path2 inclui uma raiz, path2 é devolvido.

Os parâmetros não são analisados se tiverem espaço em branco. Portanto, se path2 incluir espaço em branco (por exemplo, " \file.txt "), o Combine método acrescenta path2 a path1.

.NET Framework e versões .NET Core anteriores à 2.1: Nem todos os caracteres inválidos para nomes de diretórios e ficheiros são interpretados como inaceitáveis pelo método Combine, porque pode usar estes caracteres para caracteres curinga de pesquisa. Por exemplo, embora Path.Combine("c:\\", "*.txt") possa ser inválido se criar um ficheiro a partir dele, é válido como cadeia de pesquisa. Por isso, é interpretado com sucesso pelo Combine método.

Ver também

Aplica-se a

Combine(String, String, String, String)

Combina quatro cordas num caminho.

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

Parâmetros

path1
String

O primeiro caminho para combinar.

path2
String

O segundo caminho para combinar.

path3
String

O terceiro caminho para combinar.

path4
String

O quarto caminho para combinar.

Devoluções

Os caminhos combinados.

Exceções

.NET Framework e versões .NET Core anteriores à 2.1: path1, path2, path3 ou path4 contém um ou mais caracteres inválidos definidos em GetInvalidPathChars().

path1, path2, path3, ou path4 é null.

Exemplos

O exemplo seguinte combina quatro caminhos.

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)

Observações

path1 deve ser um caminho absoluto (por exemplo, "d:\arquivos" ou "\\arquivos\público"). Se um dos caminhos subsequentes também for um caminho absoluto, a operação de combinar descarta todos os caminhos previamente combinados e reinicia para esse caminho absoluto.

As cordas de comprimento zero são omitidas do caminho combinado.

Se path1, , ou path3 não for uma referência de drive (ou seja, "C:" ou "D:") e não terminar com um carácter separador válido conforme definido em DirectorySeparatorChar, AltDirectorySeparatorChar, ou VolumeSeparatorChar, DirectorySeparatorChar é acrescentado antes da path2concatenação. Note que, se path1, path2, ou path3 terminar num carácter separador de caminho que não é apropriado para a plataforma de destino, o Combine método preserva o carácter separador de caminho original e acrescenta um suportado. O exemplo seguinte compara o resultado em sistemas Windows e baseados em Unix quando a barra inversa é usada como um carácter separador de caminhos.

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\

Se path2 não incluir uma raiz (por exemplo, se path2 não começar com um carácter separador ou uma especificação de unidade), o resultado é uma concatenação dos dois caminhos, com um carácter separador intermediário. Se path2 inclui uma raiz, path2 é devolvido.

Os parâmetros não são analisados se tiverem espaço em branco. Portanto, se path2 incluir espaço em branco (por exemplo, " \file.txt "), o Combine método acrescenta path2 a path1.

.NET Framework e versões .NET Core anteriores à 2.1: Nem todos os caracteres inválidos para nomes de diretórios e ficheiros são interpretados como inaceitáveis pelo método Combine, porque pode usar estes caracteres para caracteres curinga de pesquisa. Por exemplo, embora Path.Combine("c:\\", "*.txt") possa ser inválido se criar um ficheiro a partir dele, é válido como cadeia de pesquisa. Por isso, é interpretado com sucesso pelo Combine método.

Ver também

Aplica-se a