2010-03-16 8 views
5

¿Existe alguna forma rápida de verificar si una ruta que tengo está en un disco local o en algún lugar de la red? No puedo simplemente verificar si es una letra de unidad vs. UNC, porque eso identificaría incorrectamente las unidades mapeadas como locales. Supuse que sería un valor booleano en el objeto DirectoryInfo, pero parece que no lo es.Compruebe si una carpeta es un recurso local o de red en .NET

He encontrado el código VB clásico para hacer esta comprobación (a través de una API), pero nada para .NET hasta el momento.

Respuesta

6
   System.IO.DirectoryInfo di; 
       if (System.IO.Path.IsPathRooted(di.FullName)) 
       { 
        System.IO.DriveInfo drive = new System.IO.DriveInfo(System.IO.Path.GetPathRoot(di.FullName)); 
        if (drive.DriveType == System.IO.DriveType.Network) 
        { 
         // do something 
        } 
       } 
       else // shouldn't be reached 
       { 
        // relative path => local 
       } 
+2

Noce, pero el "si (Path.IsPathRooted (di.FullName))" parece bastante innecesario en general, ya que el uso de FullName devuelve una ruta rooteada. – Nyerguds

1

Puede comenzar con la verificación UNC. Luego, si no es una ruta UNC, cree un objeto DriveInfo para la unidad y verifique DriveType.

0

Desde la letra de la unidad en la ruta, obtenga una instancia de DriveInfo. Esto tiene una propiedad DriveType, que puede ser: CD-ROM, fijo, Desconocido, Red, NoRootDirectory, Ram, extraíble o Desconocido

Cuestiones relacionadas