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.

Last Modified: Thursday, June 18th, 2009 @ 18:02

This entry was posted on Thursday, June 18th, 2009 at 18:02 You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

Leave a Reply