Path.Combine Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Combina cadenas en una ruta de acceso.
Sobrecargas
Combine(ReadOnlySpan<String>) |
Combina un intervalo de cadenas en una ruta de acceso. |
Combine(String[]) |
Combina una matriz de cadenas en una ruta de acceso. |
Combine(String, String) |
Combina dos cadenas en una ruta de acceso. |
Combine(String, String, String) |
Combina tres cadenas en una ruta de acceso. |
Combine(String, String, String, String) |
Combina cuatro cadenas en una ruta de acceso. |
Comentarios
Este método está diseñado para concatenar cadenas individuales en una sola cadena que representa una ruta de acceso de archivo. Sin embargo, si un argumento distinto del primero contiene una ruta de acceso raíz, se omiten los componentes de ruta de acceso anteriores y la cadena devuelta comienza con ese componente de ruta de acceso raíz. Como alternativa al método Combine
, considere la posibilidad de usar los métodos Join o TryJoin.
Importante
Este método supone que el primer argumento es una ruta de acceso absoluta y que los argumentos o argumentos siguientes son rutas de acceso relativas. Si no es así, y especialmente si algún argumento posterior es una entrada de cadenas por parte del usuario, llame al método Join o TryJoin en su lugar.
Combine(ReadOnlySpan<String>)
Combina un intervalo de cadenas en una ruta de acceso.
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>
Intervalo de partes de la ruta de acceso.
Devoluciones
Rutas de acceso combinadas.
Se aplica a
Combine(String[])
- Source:
- Path.cs
- Source:
- Path.cs
- Source:
- Path.cs
Combina una matriz de cadenas en una ruta de acceso.
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[]
Matriz de partes de la ruta de acceso.
Devoluciones
Rutas de acceso combinadas.
Excepciones
Versiones de .NET Framework y .NET Core anteriores a la 2.1: una de las cadenas de la matriz contiene uno o varios de los caracteres no válidos definidos en GetInvalidPathChars().
Una de las cadenas de la matriz es null
.
Ejemplos
En el ejemplo siguiente se combina una matriz de cadenas en una ruta de acceso.
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)
Comentarios
paths
debe ser una matriz de las partes de la ruta de acceso que se van a combinar. Si una de las rutas de acceso posteriores es una ruta de acceso absoluta, la operación de combinación restablece a partir de esa ruta de acceso absoluta, descartando todas las rutas de acceso combinadas anteriores.
Si algún elemento de paths
pero el último no es una unidad y no termina con el DirectorySeparatorChar o el carácter AltDirectorySeparatorChar, el método Combine
agrega un carácter DirectorySeparatorChar entre ese elemento y el siguiente. Tenga en cuenta que, si el elemento termina en un carácter separador de ruta de acceso que no es adecuado para la plataforma de destino, el método Combine
conserva el carácter separador de ruta de acceso original y anexa uno admitido. En el ejemplo siguiente se compara el resultado en sistemas basados en Windows y Unix cuando se usa la barra diagonal inversa como carácter separador de ruta de acceso.
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
Las cadenas de longitud cero se omiten de la ruta de acceso combinada.
Los parámetros no se analizan si tienen espacio en blanco.
Versiones de .NET Framework y .NET Core anteriores a la 2.1: no todos los caracteres no válidos para los nombres de directorio y archivo se interpretan como inaceptables por el método Combine
, ya que puede usar estos caracteres para los caracteres comodín de búsqueda. Por ejemplo, aunque Path.Combine("c:\\", "*.txt")
podría no ser válido si se creara un archivo a partir de él, es válido como una cadena de búsqueda. Por lo tanto, el método Combine
interpreta correctamente.
Consulte también
Se aplica a
Combine(String, String)
- Source:
- Path.cs
- Source:
- Path.cs
- Source:
- Path.cs
Combina dos cadenas en una ruta de acceso.
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
Primera ruta de acceso que se va a combinar.
- path2
- String
Segunda ruta de acceso que se va a combinar.
Devoluciones
Rutas de acceso combinadas. Si una de las rutas de acceso especificadas es una cadena de longitud cero, este método devuelve la otra ruta de acceso. Si path2
contiene una ruta de acceso absoluta, este método devuelve path2
.
Excepciones
Versiones de .NET Framework y .NET Core anteriores a la 2.1: path1
o path2
contienen uno o varios de los caracteres no válidos definidos en GetInvalidPathChars().
path1
o path2
es null
.
Ejemplos
En el ejemplo siguiente se muestra el uso del método Combine
en 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:^*&)(_=@#'\\^.*(.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:^*&)(_=@#'\\^.*(.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:^*&)(_=@#'\^.*(.txt' and 'subdir\file.txt', the result is:
// 'c:^*&)(_=@#'\^.*(.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:^*&)(_=@#'\\^.*(.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:^*&)(_=@#'\^.*(.txt' and 'subdir\file.txt', the result is:
' 'c:^*&)(_=@#'\^.*(.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
Comentarios
Si path1
no es una referencia de unidad (es decir, "C:" o "D:") y no termina con un carácter separador válido tal como se define en DirectorySeparatorChar, AltDirectorySeparatorCharo VolumeSeparatorChar, DirectorySeparatorChar se anexa a path1
antes de la concatenación. Tenga en cuenta que si path1
termina en un carácter separador de ruta de acceso que no es adecuado para la plataforma de destino, el método Combine
conserva el carácter separador de ruta de acceso original y anexa uno admitido. En el ejemplo siguiente se compara el resultado en sistemas basados en Windows y Unix cuando se usa la barra diagonal inversa como carácter separador de ruta de acceso.
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
Si path2
no incluye una raíz (por ejemplo, si path2
no comienza con un carácter separador o una especificación de unidad), el resultado es una concatenación de las dos rutas de acceso, con un carácter separador intermedio. Si path2
incluye una raíz, se devuelve path2
.
Los parámetros no se analizan si tienen espacio en blanco. Por lo tanto, si path2
incluye espacio en blanco (por ejemplo, " \file.txt "), el método Combine anexa path2
a path1
en lugar de devolver solo path2
.
Versiones de .NET Framework y .NET Core anteriores a la 2.1: no todos los caracteres no válidos para los nombres de directorio y archivo se interpretan como inaceptables por el método Combine
, ya que puede usar estos caracteres para los caracteres comodín de búsqueda. Por ejemplo, aunque Path.Combine("c:\\", "*.txt")
podría no ser válido si se creara un archivo a partir de él, es válido como una cadena de búsqueda. Por lo tanto, el método Combine
interpreta correctamente.
Para obtener una lista de las tareas comunes de E/S, consulte Tareas de E/S comunes.
Consulte también
- formatos de ruta de acceso de archivo en sistemas Windows
- de E/S de flujo y archivos
- Cómo: Leer texto de un de archivos
- Cómo: Escribir texto en un archivo
Se aplica a
Combine(String, String, String)
- Source:
- Path.cs
- Source:
- Path.cs
- Source:
- Path.cs
Combina tres cadenas en una ruta de acceso.
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
Primera ruta de acceso que se va a combinar.
- path2
- String
Segunda ruta de acceso que se va a combinar.
- path3
- String
Tercera ruta de acceso que se va a combinar.
Devoluciones
Rutas de acceso combinadas.
Excepciones
Versiones de .NET Framework y .NET Core anteriores a la 2.1: path1
, path2
o path3
contienen uno o varios de los caracteres no válidos definidos en GetInvalidPathChars().
path1
, path2
o path3
es null
.
Ejemplos
En el ejemplo siguiente se combinan tres rutas de acceso.
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)
Comentarios
path1
debe ser una ruta de acceso absoluta (por ejemplo, "d:\archives" o "\\archives\public"). Si path2
o path3
también es una ruta de acceso absoluta, la operación de combinación descarta todas las rutas de acceso combinadas previamente y restablece a esa ruta de acceso absoluta.
Las cadenas de longitud cero se omiten de la ruta de acceso combinada.
Si path1
o path2
no es una referencia de unidad (es decir, "C:" o "D:") y no termina con un carácter separador válido tal como se define en DirectorySeparatorChar, AltDirectorySeparatorCharo VolumeSeparatorChar, DirectorySeparatorChar se anexa a path1
o path2
antes de la concatenación. Tenga en cuenta que si path1
o path2
termina en un carácter separador de ruta de acceso que no es adecuado para la plataforma de destino, el método Combine
conserva el carácter separador de ruta de acceso original y anexa uno admitido. En el ejemplo siguiente se compara el resultado en sistemas basados en Windows y Unix cuando se usa la barra diagonal inversa como carácter separador de ruta de acceso.
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
Si path2
no incluye una raíz (por ejemplo, si path2
no comienza con un carácter separador o una especificación de unidad), el resultado es una concatenación de las dos rutas de acceso, con un carácter separador intermedio. Si path2
incluye una raíz, se devuelve path2
.
Los parámetros no se analizan si tienen espacio en blanco. Por lo tanto, si path2
incluye espacios en blanco (por ejemplo, " \file.txt "), el método Combine anexa path2
a path1
.
Versiones de .NET Framework y .NET Core anteriores a la 2.1: no todos los caracteres no válidos para los nombres de directorio y archivo se interpretan como inaceptables por el método Combine
, ya que puede usar estos caracteres para los caracteres comodín de búsqueda. Por ejemplo, aunque Path.Combine("c:\\", "*.txt")
podría no ser válido si se creara un archivo a partir de él, es válido como una cadena de búsqueda. Por lo tanto, el método Combine
interpreta correctamente.
Consulte también
Se aplica a
Combine(String, String, String, String)
- Source:
- Path.cs
- Source:
- Path.cs
- Source:
- Path.cs
Combina cuatro cadenas en una ruta de acceso.
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
Primera ruta de acceso que se va a combinar.
- path2
- String
Segunda ruta de acceso que se va a combinar.
- path3
- String
Tercera ruta de acceso que se va a combinar.
- path4
- String
Cuarta ruta de acceso que se va a combinar.
Devoluciones
Rutas de acceso combinadas.
Excepciones
Versiones de .NET Framework y .NET Core anteriores a la 2.1: path1
, path2
, path3
o path4
contienen uno o varios de los caracteres no válidos definidos en GetInvalidPathChars().
path1
, path2
, path3
o path4
es null
.
Ejemplos
En el ejemplo siguiente se combinan cuatro rutas de acceso.
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)
Comentarios
path1
debe ser una ruta de acceso absoluta (por ejemplo, "d:\archives" o "\\archives\public"). Si una de las rutas de acceso posteriores también es una ruta de acceso absoluta, la operación de combinación descarta todas las rutas de acceso combinadas anteriormente y se restablece a esa ruta de acceso absoluta.
Las cadenas de longitud cero se omiten de la ruta de acceso combinada.
Si path1
, path2
o path3
no es una referencia de unidad (es decir, "C:" o "D:") y no termina con un carácter separador válido tal como se define en DirectorySeparatorChar, AltDirectorySeparatorCharo VolumeSeparatorChar, DirectorySeparatorChar se anexa a él antes de la concatenación. Tenga en cuenta que si path1
, path2
o path3
termina en un carácter separador de ruta de acceso que no es adecuado para la plataforma de destino, el método Combine
conserva el carácter separador de ruta de acceso original y anexa uno admitido. En el ejemplo siguiente se compara el resultado en sistemas basados en Windows y Unix cuando se usa la barra diagonal inversa como carácter separador de ruta de acceso.
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\
Si path2
no incluye una raíz (por ejemplo, si path2
no comienza con un carácter separador o una especificación de unidad), el resultado es una concatenación de las dos rutas de acceso, con un carácter separador intermedio. Si path2
incluye una raíz, se devuelve path2
.
Los parámetros no se analizan si tienen espacio en blanco. Por lo tanto, si path2
incluye espacios en blanco (por ejemplo, " \file.txt "), el método Combine anexa path2
a path1
.
Versiones de .NET Framework y .NET Core anteriores a la 2.1: no todos los caracteres no válidos para los nombres de directorio y archivo se interpretan como inaceptables por el método Combine
, ya que puede usar estos caracteres para los caracteres comodín de búsqueda. Por ejemplo, aunque Path.Combine("c:\\", "*.txt")
podría no ser válido si se creara un archivo a partir de él, es válido como una cadena de búsqueda. Por lo tanto, el método Combine
interpreta correctamente.