Dertiminare/verificare se un path (stile Microsft Windows) è assoluto (in C#)
Sembra una stupidaggine, ma una funzione esplicita per fare questo non esiste, o meglio, non funziona proprio come si deve.
Il metodo del Microsoft .Net frame work in questione è Path.IsPathRooted. Sono riuscito a scovare questa funzione grazie a questo post. Ma più che il post in se stesso, la cosa più interessante è il primo commento che apapre nella pagina: la funzione Path.IsPathRooted considera il path “\temp\” come assoluto!
Diciamo che la cosa non va per nulla bene! Sebbene ci abbia perso un po’ di tempo, non sono riuscito a trovare una spiegazione al caso.
Date le circostanze, si è reso necessario sviluppare un’apposita funzione che svolga il lavoro: qui di seguito il codice.
public static bool isAbsolutePath(string sPath)
{
string sPattern = @"^[a-zA-Z]:\\";
Regex R = new Regex(sPattern, RegexOptions.Compiled | RegexOptions.IgnoreCase);
return R.IsMatch(sPath);
}
Per compilare il tutto, ricordarsi di includere il namespace System.Text.RegularExpressions.
Attenzione che la funzione non determina se un path è sintatticamente corretto (vedere post precedente): si limita a verificare “come inizia” per capire se è assoluto o meno. Il funzionamento è poi limitato solo a path locali alla macchina: non vengono gestiti path UNC.








