Compartilhar via


Path.Combine Método

Definição

Combina cadeias de caracteres em um caminho.

Sobrecargas

Combine(ReadOnlySpan<String>)

Combina um intervalo de cadeias de caracteres em um caminho.

Combine(String[])

Combina uma matriz de cadeias de caracteres em um caminho.

Combine(String, String)

Combina duas cadeias de caracteres em um caminho.

Combine(String, String, String)

Combina três cadeias de caracteres em um caminho.

Combine(String, String, String, String)

Combina quatro cadeias de caracteres em um caminho.

Comentários

Esse método destina-se a concatenar cadeias de caracteres individuais em uma única cadeia de caracteres que representa um caminho de arquivo. No entanto, se um argumento diferente do primeiro contiver um caminho com raiz, todos os componentes de caminho anteriores serão ignorados e a cadeia de caracteres retornada começará com esse componente de caminho com raiz. Como alternativa ao método Combine, considere usar os métodos Join ou TryJoin (não disponíveis no .NET Framework).

Importante

Esse método pressupõe que o primeiro argumento é um caminho absoluto e que os argumentos ou argumentos a seguir são caminhos relativos. Se esse não for o caso e, particularmente, se algum argumento subsequente for a entrada de cadeias de caracteres pelo usuário, chame o método Join ou TryJoin.

Combine(ReadOnlySpan<String>)

Combina um intervalo de cadeias de caracteres em um caminho.

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

Parâmetros

paths
ReadOnlySpan<String>

Um intervalo de partes do caminho.

Retornos

Os caminhos combinados.

Aplica-se a

Combine(String[])

Origem:
Path.cs
Origem:
Path.cs
Origem:
Path.cs

Combina uma matriz de cadeias de caracteres em um 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 matriz de partes do caminho.

Retornos

Os caminhos combinados.

Exceções

Versões do .NET Framework e do .NET Core anteriores à 2.1: uma das cadeias de caracteres na matriz contém um ou mais dos caracteres inválidos definidos em GetInvalidPathChars().

Uma das cadeias de caracteres na matriz é null.

Exemplos

O exemplo a seguir combina uma matriz de cadeias de caracteres em um 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)

Comentários

paths deve ser uma matriz das partes do caminho a serem combinadas. Se um dos caminhos subsequentes for um caminho absoluto, a operação de combinação será redefinida começando com esse caminho absoluto, descartando todos os caminhos combinados anteriores.

Se qualquer elemento em paths mas o último não for uma unidade e não terminar com o DirectorySeparatorChar ou o caractere AltDirectorySeparatorChar, o método Combine adicionará um caractere DirectorySeparatorChar entre esse elemento e o próximo. Observe que, se o elemento terminar em um caractere separador de caminho que não é apropriado para a plataforma de destino, o método Combine preservará o caractere do separador de caminho original e acrescentará um com suporte. O exemplo a seguir compara o resultado em sistemas baseados em Windows e Unix quando a barra invertida é usada como um caractere separador de caminho.

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

Cadeias de caracteres de comprimento zero são omitidas do caminho combinado.

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

Versões do .NET Framework e do .NET Core com mais de 2.1: nem todos os caracteres inválidos para nomes de diretório e arquivo são interpretados como inaceitáveis pelo método Combine, pois você pode usar esses caracteres para caracteres curinga de pesquisa. Por exemplo, embora Path.Combine("c:\\", "*.txt") pode ser inválido se você criar um arquivo a partir dele, ele é válido como uma cadeia de caracteres de pesquisa. Portanto, ele é interpretado com êxito pelo método Combine.

Confira também

Aplica-se a

Combine(String, String)

Origem:
Path.cs
Origem:
Path.cs
Origem:
Path.cs

Combina duas cadeias de caracteres em um 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 a ser combinado.

path2
String

O segundo caminho a ser combinado.

Retornos

Os caminhos combinados. Se um dos caminhos especificados for uma cadeia de caracteres de comprimento zero, esse método retornará o outro caminho. Se path2 contiver um caminho absoluto, esse método retornará path2.

Exceções

Versões do .NET Framework e do .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 a seguir demonstra o uso do método Combine no 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

Comentários

Se path1 não for uma referência de unidade (ou seja, "C:" ou "D:") e não terminar com um caractere separador válido, conforme definido em DirectorySeparatorChar, AltDirectorySeparatorCharou VolumeSeparatorChar, DirectorySeparatorChar será acrescentado a path1 antes da concatenação. Observe que, se path1 termina em um caractere separador de caminho que não é apropriado para a plataforma de destino, o método Combine preserva o caractere separador de caminho original e acrescenta um com suporte. O exemplo a seguir compara o resultado em sistemas baseados em Windows e Unix quando a barra invertida é usada como um caractere separador de caminho.

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 caractere separador ou uma especificação de unidade), o resultado será uma concatenação dos dois caminhos, com um caractere separador interveniante. Se path2 incluir uma raiz, path2 será retornado.

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

Versões do .NET Framework e do .NET Core com mais de 2.1: nem todos os caracteres inválidos para nomes de diretório e arquivo são interpretados como inaceitáveis pelo método Combine, pois você pode usar esses caracteres para caracteres curinga de pesquisa. Por exemplo, embora Path.Combine("c:\\", "*.txt") pode ser inválido se você criar um arquivo a partir dele, ele é válido como uma cadeia de caracteres de pesquisa. Portanto, ele é interpretado com êxito pelo método Combine.

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

Confira também

Aplica-se a

Combine(String, String, String)

Origem:
Path.cs
Origem:
Path.cs
Origem:
Path.cs

Combina três cadeias de caracteres em um 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 a ser combinado.

path2
String

O segundo caminho a ser combinado.

path3
String

O terceiro caminho a ser combinado.

Retornos

Os caminhos combinados.

Exceções

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

path1, path2ou path3 é null.

Exemplos

O exemplo a seguir 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)

Comentários

path1 deve ser um caminho absoluto (por exemplo, "d:\archives" ou "\\archives\public"). Se path2 ou path3 também for um caminho absoluto, a operação de combinação descartará todos os caminhos e redefinições combinados anteriormente para esse caminho absoluto.

Cadeias de caracteres de comprimento zero são omitidas do caminho combinado.

Se path1 ou path2 não for uma referência de unidade (ou seja, "C:" ou "D:") e não terminar com um caractere separador válido, conforme definido em DirectorySeparatorChar, AltDirectorySeparatorCharou VolumeSeparatorChar, DirectorySeparatorChar será acrescentado a path1 ou path2 antes da concatenação. Observe que se path1 ou path2 termina em um caractere separador de caminho que não é apropriado para a plataforma de destino, o método Combine preserva o caractere separador de caminho original e acrescenta um com suporte. O exemplo a seguir compara o resultado em sistemas baseados em Windows e Unix quando a barra invertida é usada como um caractere separador de caminho.

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 caractere separador ou uma especificação de unidade), o resultado será uma concatenação dos dois caminhos, com um caractere separador interveniante. Se path2 incluir uma raiz, path2 será retornado.

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

Versões do .NET Framework e do .NET Core com mais de 2.1: nem todos os caracteres inválidos para nomes de diretório e arquivo são interpretados como inaceitáveis pelo método Combine, pois você pode usar esses caracteres para caracteres curinga de pesquisa. Por exemplo, embora Path.Combine("c:\\", "*.txt") pode ser inválido se você criar um arquivo a partir dele, ele é válido como uma cadeia de caracteres de pesquisa. Portanto, ele é interpretado com êxito pelo método Combine.

Confira também

Aplica-se a

Combine(String, String, String, String)

Origem:
Path.cs
Origem:
Path.cs
Origem:
Path.cs

Combina quatro cadeias de caracteres em um 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 a ser combinado.

path2
String

O segundo caminho a ser combinado.

path3
String

O terceiro caminho a ser combinado.

path4
String

O quarto caminho a ser combinado.

Retornos

Os caminhos combinados.

Exceções

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

path1, path2, path3ou path4 é null.

Exemplos

O exemplo a seguir 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)

Comentários

path1 deve ser um caminho absoluto (por exemplo, "d:\archives" ou "\\archives\public"). Se um dos caminhos subsequentes também for um caminho absoluto, a operação de combinação descartará todos os caminhos e redefinições combinados anteriormente para esse caminho absoluto.

Cadeias de caracteres de comprimento zero são omitidas do caminho combinado.

Se path1, path2ou path3 não for uma referência de unidade (ou seja, "C:" ou "D:") e não terminar com um caractere separador válido, conforme definido em DirectorySeparatorChar, AltDirectorySeparatorCharou VolumeSeparatorChar, DirectorySeparatorChar será acrescentado a ele antes da concatenação. Observe que, se path1, path2ou path3 termina em um caractere separador de caminho que não é apropriado para a plataforma de destino, o método Combine preserva o caractere separador de caminho original e acrescenta um com suporte. O exemplo a seguir compara o resultado em sistemas baseados em Windows e Unix quando a barra invertida é usada como um caractere separador de caminho.

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 caractere separador ou uma especificação de unidade), o resultado será uma concatenação dos dois caminhos, com um caractere separador interveniante. Se path2 incluir uma raiz, path2 será retornado.

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

Versões do .NET Framework e do .NET Core com mais de 2.1: nem todos os caracteres inválidos para nomes de diretório e arquivo são interpretados como inaceitáveis pelo método Combine, pois você pode usar esses caracteres para caracteres curinga de pesquisa. Por exemplo, embora Path.Combine("c:\\", "*.txt") pode ser inválido se você criar um arquivo a partir dele, ele é válido como uma cadeia de caracteres de pesquisa. Portanto, ele é interpretado com êxito pelo método Combine.

Confira também

Aplica-se a