Path.Combine Método

Definição

Combina as cadeias de caracteres em um caminho.

Sobrecargas

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 raiz. Como alternativa ao Combine método , considere o uso dos Join métodos ou TryJoin .

Importante

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

Combine(String[])

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

.NET Framework e versões 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 no paths , mas o último não for uma unidade e não terminar com o DirectorySeparatorChar caractere ou AltDirectorySeparatorChar , o Combine método adicionará um DirectorySeparatorChar caractere 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 Combine método preservará o caractere 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.

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

Confira também

Aplica-se a

Combine(String, String)

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 comprimento zero, esse método retornará o outro caminho. Se path2 contiver um caminho absoluto, esse método retornará path2.

Exceções

.NET Framework e versões 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 Combine método 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 terminar em um caractere separador de caminho que não é apropriado para a plataforma de destino, o Combine método preservará o caractere 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.

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 intermediário. 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 Combine método acrescentará path2 a path1 em vez de retornar apenas path2.

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

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)

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

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

path1, path2 ou 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 combinados anteriormente e redefinirá 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 terminar em um caractere separador de caminho que não é apropriado para a plataforma de destino, o Combine método preservará o caractere 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.

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 intermediário. 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 Combine método acrescentará path2 a path1.

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

Confira também

Aplica-se a

Combine(String, String, String, String)

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

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

path1, path2, path3 ou 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 combinados anteriormente e redefinirá 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 terminar em um caractere separador de caminho que não é apropriado para a plataforma de destino, o Combine método preservará o caractere 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.

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 intermediário. 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 Combine método acrescentará path2 a path1.

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

Confira também

Aplica-se a