Path Clase
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í.
Realiza operaciones en String instancias que contienen información de ruta de acceso de archivo o directorio. Estas operaciones se realizan de forma multiplataforma.
public ref class Path abstract sealed
public ref class Path sealed
public static class Path
public sealed class Path
[System.Runtime.InteropServices.ComVisible(true)]
public static class Path
type Path = class
[<System.Runtime.InteropServices.ComVisible(true)>]
type Path = class
Public Class Path
Public NotInheritable Class Path
- Herencia
-
Path
- Atributos
Ejemplos
En el ejemplo siguiente se muestran algunos de los miembros principales de la clase Path
.
using namespace System;
using namespace System::IO;
int main()
{
String^ path1 = "c:\\temp\\MyTest.txt";
String^ path2 = "c:\\temp\\MyTest";
String^ path3 = "temp";
if ( Path::HasExtension( path1 ) )
{
Console::WriteLine( "{0} has an extension.", path1 );
}
if ( !Path::HasExtension( path2 ) )
{
Console::WriteLine( "{0} has no extension.", path2 );
}
if ( !Path::IsPathRooted( path3 ) )
{
Console::WriteLine( "The string {0} contains no root information.", path3 );
}
Console::WriteLine( "The full path of {0} is {1}.", path3, Path::GetFullPath( path3 ) );
Console::WriteLine( "{0} is the location for temporary files.", Path::GetTempPath() );
Console::WriteLine( "{0} is a file available for use.", Path::GetTempFileName() );
Console::WriteLine( "\r\nThe set of invalid characters in a path is:" );
Console::WriteLine( "(Note that the wildcard characters '*' and '?' are not invalid.):" );
Collections::IEnumerator^ myEnum = Path::InvalidPathChars->GetEnumerator();
while ( myEnum->MoveNext() )
{
Char c = *safe_cast<Char^>(myEnum->Current);
Console::WriteLine( c );
}
}
using System;
using System.IO;
class Test
{
public static void Main()
{
string path1 = @"c:\temp\MyTest.txt";
string path2 = @"c:\temp\MyTest";
string path3 = @"temp";
if (Path.HasExtension(path1))
{
Console.WriteLine("{0} has an extension.", path1);
}
if (!Path.HasExtension(path2))
{
Console.WriteLine("{0} has no extension.", path2);
}
if (!Path.IsPathRooted(path3))
{
Console.WriteLine("The string {0} contains no root information.", path3);
}
Console.WriteLine("The full path of {0} is {1}.", path3, Path.GetFullPath(path3));
Console.WriteLine("{0} is the location for temporary files.", Path.GetTempPath());
Console.WriteLine("{0} is a file available for use.", Path.GetTempFileName());
/* This code produces output similar to the following:
* c:\temp\MyTest.txt has an extension.
* c:\temp\MyTest has no extension.
* The string temp contains no root information.
* The full path of temp is D:\Documents and Settings\cliffc\My Documents\Visual Studio 2005\Projects\ConsoleApplication2\ConsoleApplication2\bin\Debug\temp.
* D:\Documents and Settings\cliffc\Local Settings\Temp\8\ is the location for temporary files.
* D:\Documents and Settings\cliffc\Local Settings\Temp\8\tmp3D.tmp is a file available for use.
*/
}
}
Imports System.IO
Public Class Test
Public Shared Sub Main()
Dim path1 As String = "c:\temp\MyTest.txt"
Dim path2 As String = "c:\temp\MyTest"
Dim path3 As String = "temp"
If Path.HasExtension(path1) Then
Console.WriteLine("{0} has an extension.", path1)
End If
If Path.HasExtension(path2) = False Then
Console.WriteLine("{0} has no extension.", path2)
End If
If Path.IsPathRooted(path3) = False Then
Console.WriteLine("The string {0} contains no root information.", path3)
End If
Console.WriteLine("The full path of {0} is {1}.", path3, Path.GetFullPath(path3))
Console.WriteLine("{0} is the location for temporary files.", Path.GetTempPath())
Console.WriteLine("{0} is a file available for use.", Path.GetTempFileName())
' This code produces output similar to the following:
' c:\temp\MyTest.txt has an extension.
' c:\temp\MyTest has no extension.
' The string temp contains no root information.
' The full path of temp is D:\Documents and Settings\cliffc\My Documents\Visual Studio 2005\Projects\ConsoleApplication2\ConsoleApplication2\bin\Debug\temp.
' D:\Documents and Settings\cliffc\Local Settings\Temp\8\ is the location for temporary files.
' D:\Documents and Settings\cliffc\Local Settings\Temp\8\tmp3D.tmp is a file available for use.
End Sub
End Class
Comentarios
Una ruta de acceso es una cadena que proporciona la ubicación de un archivo o directorio. Una ruta de acceso no apunta necesariamente a una ubicación en el disco; por ejemplo, una ruta de acceso podría asignarse a una ubicación en la memoria o en un dispositivo. El formato exacto de una ruta de acceso viene determinado por la plataforma actual. Por ejemplo, en algunos sistemas, una ruta de acceso puede comenzar con una letra de unidad o volumen, mientras que este elemento no está presente en otros sistemas. En algunos sistemas, las rutas de acceso de archivo pueden contener extensiones, que indican el tipo de información almacenada en el archivo. El formato de una extensión de nombre de archivo depende de la plataforma; Por ejemplo, algunos sistemas limitan extensiones a tres caracteres (como FAT16 que se usan habitualmente en el almacenamiento flash más pequeño y versiones anteriores de ISO 9660 que se usan en medios ópticos) y otros no. La plataforma actual también determina el conjunto de caracteres usado para separar los elementos de una ruta de acceso y el conjunto de caracteres que no se pueden usar al especificar rutas de acceso. Debido a estas diferencias, los campos de la clase Path
, así como el comportamiento exacto de algunos miembros de la clase Path
dependen de la plataforma.
Una ruta de acceso puede contener información de ubicación absoluta o relativa. Las rutas de acceso absolutas especifican completamente una ubicación: el archivo o directorio se puede identificar de forma única independientemente de la ubicación actual. Las rutas de acceso relativas especifican una ubicación parcial: la ubicación actual se usa como punto de partida al buscar un archivo especificado con una ruta de acceso relativa. Para determinar el directorio actual, llame a Directory.GetCurrentDirectory.
.NET Core 1.1 y versiones posteriores y .NET Framework 4.6.2 y versiones posteriores también admiten el acceso a objetos del sistema de archivos que son nombres de dispositivo, como "\\\?\C:\".
Para obtener más información sobre los formatos de ruta de acceso de archivo en Windows, consulte Formatos de ruta de acceso de archivo en sistemas Windows.
La mayoría de los miembros de la clase Path
no interactúan con el sistema de archivos y no comprueban la existencia del archivo especificado por una cadena de ruta de acceso.
Path
miembros de clase que modifican una cadena de ruta de acceso, como ChangeExtension, no tienen ningún efecto en los nombres de los archivos del sistema de archivos.
Algunos miembros de Path
validan el contenido de una cadena de ruta de acceso especificada e inician un ArgumentException si la cadena contiene caracteres que no son válidos en cadenas de ruta de acceso, tal como se define en los caracteres devueltos por el método GetInvalidPathChars. Por ejemplo, en las plataformas de escritorio basadas en Windows, los caracteres de ruta de acceso no válidos pueden incluir comillas ("), menor que (<), mayor que (>), canalización (|), retroceso (\b), null (\0) y caracteres Unicode de 16 a 18 y 20 a 25. Este comportamiento de validación varía entre las versiones de .NET:
En las versiones de .NET Framework y .NET Core anteriores a la 2.1: todos los miembros de
Path
que toman una ruta de acceso como argumento inician una ArgumentException si detectan caracteres de ruta de acceso no válidos.En .NET Core 2.1 y versiones posteriores: GetFullPath es el único miembro que produce un ArgumentException si la cadena contiene caracteres de ruta de acceso no válidos.
Los miembros de la clase Path
permiten realizar operaciones comunes de forma rápida y sencilla, como determinar si una extensión de nombre de archivo forma parte de una ruta de acceso y combinar dos cadenas en un nombre de ruta de acceso.
Todos los miembros de la clase Path
son estáticos y, por tanto, se pueden llamar sin tener una instancia de una ruta de acceso.
Nota
En los miembros que aceptan una ruta de acceso como una cadena de entrada, esa ruta de acceso debe tener un formato correcto o se produce una excepción. Por ejemplo, si una ruta de acceso está completa pero comienza con un espacio, la ruta de acceso no se recorta en métodos de la clase . Por lo tanto, la ruta de acceso tiene un formato incorrecto y se genera una excepción. De forma similar, una ruta de acceso o una combinación de rutas de acceso no se puede calificar completamente dos veces. Por ejemplo, "c:\temp c:\windows" también genera una excepción en la mayoría de los casos. Asegúrese de que las rutas de acceso están bien formadas cuando se usan métodos que aceptan una cadena de ruta de acceso.
En los miembros que aceptan una ruta de acceso, la ruta de acceso puede hacer referencia a un archivo o simplemente a un directorio. La ruta de acceso especificada también puede hacer referencia a una ruta de acceso relativa o a una ruta de acceso de convención de nomenclatura universal (UNC) para un servidor y un nombre de recurso compartido. Por ejemplo, todas las siguientes son rutas de acceso aceptables:
"c:\\MyDir\\MyFile.txt" en C#, o "c:\MyDir\MyFile.txt" en Visual Basic.
"c:\\MyDir" en C#, o "c:\MyDir" en Visual Basic.
"MyDir\\MySubdir" en C#, o "MyDir\MySubDir" en Visual Basic.
"\\\\MyServer\\MyShare" en C#, o "\\MyServer\MyShare" en Visual Basic.
Dado que todas estas operaciones se realizan en cadenas, es imposible comprobar que los resultados son válidos en todos los escenarios. Por ejemplo, el método GetExtension analiza una cadena que se pasa a ella y devuelve la extensión de esa cadena. Sin embargo, esto no significa que exista un archivo con esa extensión en el disco.
Para obtener una lista de las tareas comunes de E/S, consulte Tareas de E/S comunes.
Campos
AltDirectorySeparatorChar |
Proporciona un carácter alternativo específico de la plataforma que se usa para separar los niveles de directorio de una cadena de ruta de acceso que refleja una organización jerárquica del sistema de archivos. |
DirectorySeparatorChar |
Proporciona un carácter específico de la plataforma que se usa para separar los niveles de directorio de una cadena de ruta de acceso que refleja una organización jerárquica del sistema de archivos. |
InvalidPathChars |
Obsoletos.
Obsoletos.
Proporciona una matriz específica de la plataforma de caracteres que no se puede especificar en los argumentos de cadena de ruta de acceso pasados a los miembros de la clase Path. |
PathSeparator |
Carácter separador específico de la plataforma que se usa para separar cadenas de ruta de acceso en variables de entorno. |
VolumeSeparatorChar |
Proporciona un carácter separador de volumen específico de la plataforma. |
Métodos
ChangeExtension(String, String) |
Cambia la extensión de una cadena de ruta de acceso. |
Combine(ReadOnlySpan<String>) |
Combina un intervalo 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. |
Combine(String[]) |
Combina una matriz de cadenas en una ruta de acceso. |
EndsInDirectorySeparator(ReadOnlySpan<Char>) |
Devuelve un valor que indica si la ruta de acceso, especificada como un intervalo de solo lectura, finaliza en un separador de directorios. |
EndsInDirectorySeparator(String) |
Devuelve un valor que indica si la ruta de acceso especificada termina en un separador de directorios. |
Exists(String) |
Determina si existe el archivo o directorio especificados. |
GetDirectoryName(ReadOnlySpan<Char>) |
Devuelve la información del directorio de la ruta de acceso especificada representada por un intervalo de caracteres. |
GetDirectoryName(String) |
Devuelve la información del directorio de la ruta de acceso especificada. |
GetExtension(ReadOnlySpan<Char>) |
Devuelve la extensión de una ruta de acceso de archivo representada por un intervalo de caracteres de solo lectura. |
GetExtension(String) |
Devuelve la extensión (incluido el punto ".") de la cadena de ruta de acceso especificada. |
GetFileName(ReadOnlySpan<Char>) |
Devuelve el nombre de archivo y la extensión de una ruta de acceso de archivo representada por un intervalo de caracteres de solo lectura. |
GetFileName(String) |
Devuelve el nombre de archivo y la extensión de la cadena de ruta de acceso especificada. |
GetFileNameWithoutExtension(ReadOnlySpan<Char>) |
Devuelve el nombre de archivo sin la extensión de una ruta de acceso de archivo representada por un intervalo de caracteres de solo lectura. |
GetFileNameWithoutExtension(String) |
Devuelve el nombre de archivo de la cadena de ruta de acceso especificada sin la extensión . |
GetFullPath(String) |
Devuelve la ruta de acceso absoluta para la cadena de ruta de acceso especificada. |
GetFullPath(String, String) |
Devuelve una ruta de acceso absoluta de una ruta de acceso relativa y una ruta de acceso base completa. |
GetInvalidFileNameChars() |
Obtiene una matriz que contiene los caracteres que no se permiten en los nombres de archivo. |
GetInvalidPathChars() |
Obtiene una matriz que contiene los caracteres que no se permiten en los nombres de ruta de acceso. |
GetPathRoot(ReadOnlySpan<Char>) |
Obtiene la información del directorio raíz de la ruta de acceso contenida en el intervalo de caracteres especificado. |
GetPathRoot(String) |
Obtiene la información del directorio raíz de la ruta de acceso contenida en la cadena especificada. |
GetRandomFileName() |
Devuelve un nombre de carpeta aleatorio o un nombre de archivo. |
GetRelativePath(String, String) |
Devuelve una ruta de acceso relativa de una ruta de acceso a otra. |
GetTempFileName() |
Crea un archivo temporal con nombre único y cero en el disco y devuelve la ruta de acceso completa de ese archivo. |
GetTempPath() |
Devuelve la ruta de acceso de la carpeta temporal del usuario actual. |
HasExtension(ReadOnlySpan<Char>) |
Determina si la ruta de acceso representada por el intervalo de caracteres especificado incluye una extensión de nombre de archivo. |
HasExtension(String) |
Determina si una ruta de acceso incluye una extensión de nombre de archivo. |
IsPathFullyQualified(ReadOnlySpan<Char>) |
Devuelve un valor que indica si la ruta de acceso del archivo representada por el intervalo de caracteres especificado se fija en una unidad específica o una ruta de acceso UNC. |
IsPathFullyQualified(String) |
Devuelve un valor que indica si la ruta de acceso del archivo especificada se fija en una unidad específica o una ruta de acceso UNC. |
IsPathRooted(ReadOnlySpan<Char>) |
Devuelve un valor que indica si el intervalo de caracteres especificado que representa una ruta de acceso de archivo contiene una raíz. |
IsPathRooted(String) |
Devuelve un valor que indica si la cadena de ruta de acceso especificada contiene una raíz. |
Join(ReadOnlySpan<Char>, ReadOnlySpan<Char>) |
Concatena dos componentes de ruta de acceso en una sola ruta de acceso. |
Join(ReadOnlySpan<Char>, ReadOnlySpan<Char>, ReadOnlySpan<Char>) |
Concatena tres componentes de ruta de acceso en una sola ruta de acceso. |
Join(ReadOnlySpan<Char>, ReadOnlySpan<Char>, ReadOnlySpan<Char>, ReadOnlySpan<Char>) |
Concatena cuatro componentes de ruta de acceso en una sola ruta de acceso. |
Join(ReadOnlySpan<String>) |
Concatena un intervalo de rutas de acceso en una sola ruta de acceso. |
Join(String, String) |
Concatena dos rutas de acceso en una sola ruta de acceso. |
Join(String, String, String) |
Concatena tres rutas de acceso en una sola ruta de acceso. |
Join(String, String, String, String) |
Concatena cuatro rutas de acceso en una sola ruta de acceso. |
Join(String[]) |
Concatena una matriz de rutas de acceso en una sola ruta de acceso. |
TrimEndingDirectorySeparator(ReadOnlySpan<Char>) |
Recorta un separador de directorio final más allá de la raíz de la ruta de acceso especificada. |
TrimEndingDirectorySeparator(String) |
Recorta un separador de directorio final más allá de la raíz de la ruta de acceso especificada. |
TryJoin(ReadOnlySpan<Char>, ReadOnlySpan<Char>, ReadOnlySpan<Char>, Span<Char>, Int32) |
Intenta concatenar tres componentes de ruta de acceso a un único intervalo de caracteres asignado previamente y devuelve un valor que indica si la operación se realizó correctamente. |
TryJoin(ReadOnlySpan<Char>, ReadOnlySpan<Char>, Span<Char>, Int32) |
Intenta concatenar dos componentes de ruta de acceso a un único intervalo de caracteres asignados previamente y devuelve un valor que indica si la operación se realizó correctamente. |