2010-06-29 10 views

cevap

11

Eğer Path sınıfa bakarsak orada yardımcı olmalıdır yöntemlerin bir çift:

Path.Combine 

ve So

Path.GetFullPath 

:

string newPath = Path.Combine(basepath, relative); 
string absolute = Path.GetFullPath(newPath); 

İkinci adım ISN'de rağmen kesinlikle gerekli - eğer sen basıyordu eğer size bir "temiz" yol verecekti.

+0

Güzel beklendiği gibi değil! 'Path.GetFullPath (Path.Combine (basepath, relative))' ihtiyacım olanı döndürür. Eğer belgeler açıkça path2 mutlak bir yol içeriyorsa, bu yöntem path2 döndürür "belirtiyor beri bekliyoruz neden bilmiyorum -: –

0

Path.Combine Çünkü burada her durumda çalışmaz

static string GetFullPath(string maybeRelativePath, string baseDirectory) { 
    if (baseDirectory == null) baseDirectory = Environment.CurrentDirectory; 
    var root = Path.GetPathRoot(maybeRelativePath); 
    if (string.IsNullOrEmpty(root)) 
     return Path.GetFullPath(Path.Combine(baseDirectory, maybeRelativePath)); 
    if (root == "\\") 
     return Path.GetFullPath(Path.Combine(Path.GetPathRoot(baseDirectory), maybeRelativePath.Remove(0, 1))); 
    return maybeRelativePath; 
} 

Path.Combine(@"C:\foo\",@"\foo\bar") getiri @"\foo\bar" :-) daha karmaşık bir fonksiyondur ve @"C:\foo\bar"

+1

"fon \ çubuğu \ excpected C ... döner \ fan \ çubuğu değil" ." – Joe

+0

\ foo \ bar, mutlak olmak için sürücü harfini eksik Windows'da mutlak değil - C: \ foo \ bar is ^^ – kux

+0

"Beklenen" ile "Sihirli yöntem tarafından beklenen" demek istedim "^^ – kux