2010-03-16 13 views
5

C'è un modo rapido per verificare se un percorso che ho è su un disco locale o da qualche parte sulla rete? Non riesco solo a verificare se si tratta di una lettera di unità rispetto a UNC, perché ciò identificherà erroneamente le unità mappate come locali. Ho pensato che sarebbe un booleano nell'oggetto DirectoryInfo, ma sembra che non lo sia.Verificare se una cartella è una risorsa locale o di rete in. NET

Ho trovato codice VB classico per eseguire questo controllo (tramite un'API), ma finora nulla per .NET.

risposta

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, ma il "if (Path.IsPathRooted (di.FullName))" sembra abbastanza inutile in generale, dal momento che l'uso di FullName restituisce un percorso rooted. – Nyerguds

1

Si potrebbe iniziare con il controllo UNC. Quindi, se non è un percorso UNC, creare un oggetto DriveInfo per l'unità e controllare lo DriveType.

0

Dalla lettera dell'unità nel percorso, ottenere un'istanza DriveInfo. Questa ha una proprietà DriveType, che può essere: CD-Rom, fisso, Unknown, Network, NoRootDirectory, Ram, rimovibile, o Sconosciuto

Problemi correlati