Path Clase

Definición

Ejecuta operaciones en instancias de String que contienen información de rutas de acceso de archivos o directorios. Estas operaciones se ejecutan de forma adecuada para múltiples plataformas.

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 Path clase .

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 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, lo que indica 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 las extensiones a tres caracteres (como FAT16 que se suelen usar en 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 que se usan 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 Path clase, así como el comportamiento exacto de algunos miembros de la clase dependen de la Path 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 Path clase no interactúan con el sistema de archivos y no comprueban la existencia del archivo especificado por una cadena de ruta de acceso. Path Los 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 Path miembros validan el contenido de una cadena de ruta de acceso especificada y inician si ArgumentException 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 GetInvalidPathChars método . Por ejemplo, en las plataformas de escritorio basadas en Windows, los caracteres de ruta de acceso no válidos pueden incluir comillas ("), menor que (<), greater than (>), 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 .NET Framework y versiones de .NET Core anteriores a la 2.1: todos los Path miembros que toman una ruta de acceso como argumento producen un 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 si ArgumentException la cadena contiene caracteres de ruta de acceso no válidos.

Los miembros de la Path clase 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 combina dos cadenas en un nombre de ruta de acceso.

Todos los miembros de la Path clase 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 genera 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 pueden calificar 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 al usar 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 solo 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.

  • "MyDirMySubdir\\" en C#, o "MyDirMySubDir\" en Visual Basic.

  • "\\\\MyServerMyShare\\" en C#, o "\\MyServerMyShare\" 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 GetExtension método analiza una cadena que se le pasa 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 tareas de E/S comunes, consulte Tareas de E/S comunes.

Campos

AltDirectorySeparatorChar

Proporciona un carácter alternativo específico de la plataforma, que se utiliza para separar niveles de directorios en 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 utiliza para separar niveles de directorios en una cadena de ruta de acceso que refleja una organización jerárquica del sistema de archivos.

InvalidPathChars
Obsoleto.
Obsoleto.
Obsoleto.

Proporciona una matriz de caracteres, específica de la plataforma, que no pueden especificarse en argumentos de cadena de ruta de acceso que se pasen a miembros de la clase Path.

PathSeparator

Carácter separador específico de la plataforma que se utiliza para separar cadenas de ruta de acceso en variables de entorno.

VolumeSeparatorChar

Proporciona un carácter separador de volúmenes específico de la plataforma.

Métodos

ChangeExtension(String, String)

Cambia la extensión de una cadena de 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, termina 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 el directorio especificado.

GetDirectoryName(ReadOnlySpan<Char>)

Devuelve la información de directorio para la ruta de acceso especificada representada por un intervalo de caracteres.

GetDirectoryName(String)

Devuelve la información de directorio para la ruta de acceso especificada.

GetExtension(ReadOnlySpan<Char>)

Devuelve la extensión de una ruta de acceso de archivo que se representa mediante 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 que se representa mediante 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 que se representa mediante un intervalo de caracteres de solo lectura.

GetFileNameWithoutExtension(String)

Devuelve el nombre de archivo y 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 a partir de una ruta de acceso relativa y una ruta de acceso base completa.

GetInvalidFileNameChars()

Obtiene una matriz que contiene los caracteres no permitidos en los nombres de archivo.

GetInvalidPathChars()

Obtiene una matriz que contiene los caracteres no permitidos 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 o de archivo aleatorio.

GetRelativePath(String, String)

Devuelve una ruta de acceso relativa a partir de una ruta de acceso a otra.

GetTempFileName()

Crea un archivo temporal de cero bytes y nombre único en el disco y devuelve la ruta de acceso completa a 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 de archivo representada por el intervalo de caracteres especificado está fija en una unidad específica o una ruta de acceso UNC.

IsPathFullyQualified(String)

Devuelve un valor que indica si la ruta de acceso de archivo especificada está 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 única ruta de acceso.

Join(ReadOnlySpan<Char>, ReadOnlySpan<Char>, ReadOnlySpan<Char>)

Concatena tres componentes de ruta de acceso en una única ruta de acceso.

Join(ReadOnlySpan<Char>, ReadOnlySpan<Char>, ReadOnlySpan<Char>, ReadOnlySpan<Char>)

Concatena cuatro rutas de acceso en una única ruta de acceso.

Join(String, String)

Concatena dos rutas de acceso en una única ruta de acceso.

Join(String, String, String)

Concatena tres rutas de acceso en una única ruta de acceso.

Join(String, String, String, String)

Concatena cuatro rutas de acceso en una única ruta de acceso.

Join(String[])

Concatena una matriz de rutas de acceso en una única ruta de acceso.

TrimEndingDirectorySeparator(ReadOnlySpan<Char>)

Recorta un separador de directorios final más allá de la raíz de la ruta de acceso especificada.

TrimEndingDirectorySeparator(String)

Recorta un separador de directorios 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 preasignado 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 la ruta de acceso a un único intervalo de caracteres asignados previamente, y devuelve un valor que indica si la operación se realizó correctamente.

Se aplica a

Consulte también