Yanıtlar:
DirectoryInfo.Name'e bakın :
string dirName = new DirectoryInfo(@"c:\projects\roott\wsdlproj\devlop\beta2\text").Name;
Dosya yolundan ana klasör adını almak istediğinizi düşünüyorum. Alması kolaydır. Bir yol, bir FileInfo
yazı nesnesi oluşturmak ve onu kullanmaktır.Directory
özelliğini .
Misal:
FileInfo fInfo = new FileInfo("c:\projects\roott\wsdlproj\devlop\beta2\text\abc.txt");
String dirName = fInfo.Directory.Name;
Bunu dene
var myFolderName = @"c:\projects\roott\wsdlproj\devlop\beta2\text";
var result = Path.GetFileName(myFolderName);
@"c:\projects\roott\wsdlproj\devlop\beta2\text\"
Bunu kullanabilirsin:
string path = @"c:\projects\roott\wsdlproj\devlop\beta2\text";
string lastDirectory = path.Split(new char[] { System.IO.Path.DirectorySeparatorChar }, StringSplitOptions.RemoveEmptyEntries).Last();
StringSplitOptions.RemoveEmptyEntries
hile yapar.
Basitçe kullan Path.GetFileName
Burada - Klasör adını bir klasörün tam yolundan çıkarın:
string folderName = Path.GetFileName(@"c:\projects\root\wsdlproj\devlop\beta2\text");//Return "text"
İşte bazı ekstra - Klasör adını bir dosyanın tam yolundan çıkarın:
string folderName = Path.GetFileName(Path.GetDirectoryName(@"c:\projects\root\wsdlproj\devlop\beta2\text\GTA.exe"));//Return "text"
Text.txt'nin bir dizin mi yoksa sadece bir dosya mı olduğunu bulmak için dosya sistemine girmekten başka bir yol olmadığını düşündüm. Basit bir şey istiyorsanız, belki de kullanabilirsiniz:
s.Substring(s.LastIndexOf(@"\"));
İşte bir DirectoryInfo nesnesi oluşturmak zorunda kalmadan benim için çalışan alternatif bir yöntem. Kilit nokta, GetFileName()
yolda eğik çizgi olmadığında çalışmasıdır.
var name = Path.GetFileName(path.TrimEnd(Path.DirectorySeparatorChar));
Misal:
var list = Directory.EnumerateDirectories(path, "*")
.Select(p => new
{
id = "id_" + p.GetHashCode().ToString("x"),
text = Path.GetFileName(p.TrimEnd(Path.DirectorySeparatorChar)),
icon = "fa fa-folder",
children = true
})
.Distinct()
.OrderBy(p => p.text);
Bu da şu şekilde yapılabilir;
var directoryName = System.IO.Path.GetFileName(@"c:\projects\roott\wsdlproj\devlop\beta2\text");
Göre önceki cevaplar (ancak sabit)
using static System.IO.Path;
var dir = GetFileName(path?.TrimEnd(DirectorySeparatorChar, AltDirectorySeparatorChar));
Açıklanması GetFileName
dan .NET kaynağı :
Verilen yolun adını ve uzantı kısımlarını döndürür. Sonuçta elde edilen dize, yolda son ters eğik çizgiyi ("\"), eğik çizgiyi ("/") veya iki nokta üst üste (":") karakterini izleyen yol karakterlerini içerir. Sondaki eğik çizgi, eğik çizgi veya iki nokta üst üste karakterleri kaldırıldıktan sonra yol ters eğik çizgi içermiyorsa, sonuçta elde edilen dize, yolun tamamıdır. Yol null ise ortaya çıkan dize null olur.
Path.GetDirectoryName(@"c:\projects\roott\wsdlproj\devlop\beta2\text");
c:\projects\roott\wsdlproj\devlop\beta2
ve OP'nin peşinde olduğu bu değil.