Odpowiedzi:
Zobacz DirectoryInfo.Name :
string dirName = new DirectoryInfo(@"c:\projects\roott\wsdlproj\devlop\beta2\text").Name;
Myślę, że chcesz uzyskać nazwę folderu nadrzędnego ze ścieżki pliku. To jest łatwe do zdobycia. Jednym ze sposobów jest utworzenie FileInfo
obiektu typu i użycie jegoDirectory
właściwości.
Przykład:
FileInfo fInfo = new FileInfo("c:\projects\roott\wsdlproj\devlop\beta2\text\abc.txt");
String dirName = fInfo.Directory.Name;
Spróbuj tego
var myFolderName = @"c:\projects\roott\wsdlproj\devlop\beta2\text";
var result = Path.GetFileName(myFolderName);
@"c:\projects\roott\wsdlproj\devlop\beta2\text\"
Możesz użyć tego:
string path = @"c:\projects\roott\wsdlproj\devlop\beta2\text";
string lastDirectory = path.Split(new char[] { System.IO.Path.DirectorySeparatorChar }, StringSplitOptions.RemoveEmptyEntries).Last();
StringSplitOptions.RemoveEmptyEntries
Zrób sztuczkę.
Po prostu użyj Path.GetFileName
Tutaj - wyodrębnij nazwę folderu z pełnej ścieżki folderu:
string folderName = Path.GetFileName(@"c:\projects\root\wsdlproj\devlop\beta2\text");//Return "text"
Oto kilka dodatkowych - Wyodrębnij nazwę folderu z pełnej ścieżki pliku:
string folderName = Path.GetFileName(Path.GetDirectoryName(@"c:\projects\root\wsdlproj\devlop\beta2\text\GTA.exe"));//Return "text"
Pomyślałem, że nie ma innego wyjścia, jak tylko wejść do systemu plików, aby dowiedzieć się, czy text.txt jest katalogiem, czy tylko plikiem. Jeśli chciałeś czegoś prostego, może możesz po prostu użyć:
s.Substring(s.LastIndexOf(@"\"));
Oto alternatywna metoda, która działała dla mnie bez konieczności tworzenia obiektu DirectoryInfo. Kluczową kwestią jest to, że GetFileName()
działa, gdy na ścieżce nie ma końcowego ukośnika.
var name = Path.GetFileName(path.TrimEnd(Path.DirectorySeparatorChar));
Przykład:
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);
Można to również zrobić w ten sposób;
var directoryName = System.IO.Path.GetFileName(@"c:\projects\roott\wsdlproj\devlop\beta2\text");
Na podstawie poprzednich odpowiedzi (ale naprawione)
using static System.IO.Path;
var dir = GetFileName(path?.TrimEnd(DirectorySeparatorChar, AltDirectorySeparatorChar));
Wyjaśnienie GetFileName
ze źródła .NET :
Zwraca nazwę i rozszerzenie podanej ścieżki. Wynikowy ciąg zawiera znaki ścieżki, które następują po ostatnim ukośniku odwrotnym („\”), ukośniku („/”) lub dwukropku („:”) w ścieżce. Wynikowy ciąg to cała ścieżka, jeśli ścieżka nie zawiera odwrotnego ukośnika po usunięciu końcowych ukośników, ukośników lub dwukropków. Wynikowy ciąg ma wartość null, jeśli path ma wartość null.
Path.GetDirectoryName(@"c:\projects\roott\wsdlproj\devlop\beta2\text");
c:\projects\roott\wsdlproj\devlop\beta2
, a nie o to chodziło w PO.