2014-11-19 23 views
8

Ben şuna benzer bir dizin var: Benim uygulamadaSon klasörü bir yol dizesinden nasıl alabilirim?

C:\Users\me\Projects\ 

, o yola verilen bir proje adı ekleyin:

C:\Users\me\Projects\myProject 

sonra, o konuda geçmek isterler bir yönteme. Bu yöntemde proje ismini kullanmak isterim. Son klasör adını almak için yol dizesini ayrıştırmanın en iyi yolu nedir?

Bir çalışmanın yolu ve proje adını işlev içine aktarmak olacağını biliyorum, ancak bunu bir parametreyle sınırlayabileceğimi umuyordum.

string dirName = new DirectoryInfo(@"C:\Users\me\Projects\myProject\").Name; 

Veya (hack bir parça) gibi Path.GetFileName kullanın::

+2

Bir şey denediniz mi? – Haris

+0

Barely. Etrafta aradım ve benzer sorular buldum ama ihtiyacım olanı bulamadı. En iyi varsayımım, 'Yol' sınıfının bunun için bir yöntemi var, ama ne olduğunu bilmiyorum. – AdamMc331

+2

Sadece bir parametre kullanmak, daha iyi bir çözüm olmayabilir. –

cevap

30

bunu yapabilirsiniz

string dirName2 = Path.GetFileName(
       @"C:\Users\me\Projects\myProject".TrimEnd(Path.DirectorySeparatorChar)); 

Path.GetFileName, yolundan dosya adını döndürür yolu sonlandırma ise \ ile boş bir dize dönecektir, bu yüzden TrimEnd(Path.DirectorySeparatorChar)

+0

DirectoryInfo yöntemi çalıştı. Bence tercih edilen yöntem bu mu? Teşekkürler! – AdamMc331

+0

Her ikisi de çalışmalı, ancak IMO, evet 'DirectoryInfo' daha temiz ve daha açık niyetle iletiyor. – Habib

+0

"DirectoryInfo" yu seviyorum çünkü bunun bir '\\' ile sonlandırılıp sonlandırılmadığına bakılmaksızın çalıştığını görüyorum. Benim başvurumda olmamalıydı, ama her iki durumda da her halükarda test ettim. Çok temiz görünüyor. – AdamMc331

1
string path = @"C:\Users\me\Projects\myProject"; 
string result = System.IO.Path.GetFileName(path); 

result = myProject

+4

Yol, "C: \ Users \ me \ Projects \ myProject \" gibi bir ters eğik çizgi ile bitiyorsa bu işe yaramaz – Habib

İlgili konular