Path (Clase)
Ensamblado: mscorlib (en mscorlib.dll)
.NET Framework no admite el acceso directo a discos físicos a través de rutas de acceso que sean nombres de dispositivo, como "\\.\UNIDADFÍSICA0 ".
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 de disco; por ejemplo, una ruta de acceso puede asignarse a una ubicación en la memoria o en un dispositivo. El formato exacto de una ruta de acceso está determinado por la plataforma actual. Por ejemplo, en algunos sistemas, una ruta de acceso puede empezar por una letra de unidad o de volumen, mientras que este elemento está ausente en otros sistemas. En algunos sistemas, las rutas de acceso a archivos pueden contener extensiones, que indican el tipo de información almacenada en el archivo. El formato de la extensión del nombre de un archivo depende de la plataforma; por ejemplo, algunos sistemas limitan las extensiones a tres caracteres y otros no lo hacen así. La plataforma actual determina también el conjunto de caracteres utilizado para separar los elementos de una ruta de acceso y el conjunto de caracteres que no se pueden utilizar al especificar rutas. 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 absolutas especifican por completo una ubicación: el archivo o directorio puede identificarse de forma única independientemente de la ubicación actual. Las rutas relativas especifican una ubicación parcial: la ubicación actual se utiliza como punto de inicio cuando se busca un archivo especificado mediante una ruta relativa. Para determinar el directorio actual, llame a Directory.GetCurrentDirectory.
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. Los miembros de la clase Path que modifican una cadena de ruta de acceso, como ChangeExtension, no afectan a los nombres de archivo del sistema de archivos. Los miembros de Path, sin embargo, validan el contenido de una cadena de ruta de acceso especificada y producen una excepción ArgumentException si la cadena contiene caracteres que no son válidos en las cadenas de ruta de acceso, tal y como están definidos en InvalidPathChars. Por ejemplo, en plataformas de escritorio basados en Windows, los caracteres no válidos de ruta de acceso podrían incluir signos como comillas ("), menor que (<), mayor que (>), barra vertical (|), retroceso (\b), nulo (\0) y caracteres Unicode del 16 al 18 y del 20 al 25.
Los miembros de la clase Path permiten ejecutar de forma rápida y sencilla operaciones comunes tales como determinar si una extensión de nombre de archivo forma parte de la ruta de acceso y combinar dos cadenas en un nombre de ruta.
Todos los miembros de la clase Path son estáticos y, por lo tanto, pueden recibir llamadas sin tener una instancia de una ruta de acceso.
Nota |
|---|
| En los miembros que aceptan una ruta como cadena de entrada, la ruta debe ser correcta o, de lo contrario, se produce una excepción. Por ejemplo, si se trata de una ruta completa pero que empieza por un espacio, la ruta no se recorta en los métodos de la clase. En consecuencia, la ruta está mal construida y se produce una excepción. De forma similar, una combinación de rutas de acceso no puede completarse dos veces. Por ejemplo, "c:\temp c:\windows" produce también una excepción en la mayoría de los casos. Asegúrese de que las rutas de acceso estén bien construidas cuando utilice métodos que acepten una cadena de ruta de acceso. |
En los miembros que aceptan una ruta de acceso, esta ruta puede hacer referencia a un archivo o sólo a un directorio. La ruta especificada puede hacer referencia también a una ruta relativa o a una ruta de convención de nomenclatura universal (Universal Naming Convention, UNC) de un servidor y un nombre de recurso compartido. Por ejemplo, las siguientes rutas de acceso son todas válidas:
-
"c:\\MiDir\\MiArchivo.txt" en C# o "c:\MiDir\MiArchivo.txt" en Visual Basic.
-
"c:\\MiDir" en C# o "c:\MiDir" en Visual Basic.
-
"MiDir\\MiSubdir" en C# o "MiDir\MiSubDir" en Visual Basic.
-
"\\\\MiServidor\\MiRecursoComp" en C# o "\\MiServidor\MiRecursoComp" en Visual Basic.
Dado que todas estas operaciones se ejecutan sobre cadenas, no es posible comprobar que los resultados son válidos para todos los escenarios. Por ejemplo, el método GetExtension analiza una cadena que se le pasa y devuelve la extensión de la cadena. Sin embargo, esto no significa que exista en el disco un archivo con tal extensión.
Para obtener un ejemplo de cómo utilizar esta clase, vea la sección Ejemplo que figura a continuación. En la siguiente tabla se muestran ejemplos de otras tareas de E/S típicas o relacionadas.
| Para realizar esta operación... | Vea el ejemplo de este tema... |
|---|---|
| Crear un archivo de texto | |
| Escribir en un archivo de texto. | |
| Leer de un archivo de texto. | |
| Recuperar la extensión de un nombre de archivo. | GetExtension |
| Recuperar la ruta de acceso completa de un archivo | |
| Recuperar el nombre de archivo y la extensión de una ruta de acceso | |
| Recuperar sólo el nombre de archivo de una ruta de acceso | |
| Recuperar sólo el nombre de directorio de una ruta de acceso | |
| Cambiar la extensión de un archivo | ChangeExtension |
| Determinar si un directorio existe | |
| Determinar si un archivo existe |
En el ejemplo de código siguiente se muestran algunos de los miembros principales de la clase Path.
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. */ } }
import System.*;
import System.IO.*;
class Test
{
public static void main(String[] args)
{
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.):");
char c = ' ';
for (int iCtr = 0; iCtr < Path.InvalidPathChars.get_Length(); iCtr++) {
c = Path.InvalidPathChars[iCtr];
Console.WriteLine(c);
}
} //main
} //Test
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium, Windows Mobile para Pocket PC, Windows Mobile para Smartphone, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter Edition
.NET Framework no admite todas las versiones de cada plataforma. Para obtener una lista de las versiones admitidas, vea Requisitos del sistema.
Nota