Câu trả lời:
Xem DirectoryInfo.Name :
string dirName = new DirectoryInfo(@"c:\projects\roott\wsdlproj\devlop\beta2\text").Name;
Tôi nghĩ rằng bạn muốn lấy tên thư mục cha từ đường dẫn tệp. Nó rất dễ dàng để có được. Một cách là tạo một FileInfo
đối tượng kiểu và sử dụng thuộc tính của nó Directory
.
Thí dụ:
FileInfo fInfo = new FileInfo("c:\projects\roott\wsdlproj\devlop\beta2\text\abc.txt");
String dirName = fInfo.Directory.Name;
Thử cái này
var myFolderName = @"c:\projects\roott\wsdlproj\devlop\beta2\text";
var result = Path.GetFileName(myFolderName);
@"c:\projects\roott\wsdlproj\devlop\beta2\text\"
Bạn có thể sử dụng điều này:
string path = @"c:\projects\roott\wsdlproj\devlop\beta2\text";
string lastDirectory = path.Split(new char[] { System.IO.Path.DirectorySeparatorChar }, StringSplitOptions.RemoveEmptyEntries).Last();
StringSplitOptions.RemoveEmptyEntries
không lừa
Đơn giản chỉ cần sử dụng Path.GetFileName
Tại đây - Trích xuất tên thư mục từ đường dẫn đầy đủ của thư mục:
string folderName = Path.GetFileName(@"c:\projects\root\wsdlproj\devlop\beta2\text");//Return "text"
Đây là một số bổ sung - Trích xuất tên thư mục từ đường dẫn đầy đủ của một tệp:
string folderName = Path.GetFileName(Path.GetDirectoryName(@"c:\projects\root\wsdlproj\devlop\beta2\text\GTA.exe"));//Return "text"
Tôi đoán rằng không có cách nào khác ngoài việc đi vào hệ thống tệp để tìm hiểu xem text.txt là một thư mục hay chỉ là một tệp. Nếu bạn muốn một cái gì đó đơn giản, có lẽ bạn chỉ cần sử dụng:
s.Substring(s.LastIndexOf(@"\"));
Đây là một phương pháp thay thế phù hợp với tôi mà không phải tạo đối tượng DirectoryInfo. Điểm mấu chốt là GetFileName()
hoạt động khi không có dấu gạch chéo trong đường dẫn.
var name = Path.GetFileName(path.TrimEnd(Path.DirectorySeparatorChar));
Thí dụ:
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);
Điều này cũng có thể được thực hiện như vậy;
var directoryName = System.IO.Path.GetFileName(@"c:\projects\roott\wsdlproj\devlop\beta2\text");
Dựa trên các câu trả lời trước (nhưng đã sửa)
using static System.IO.Path;
var dir = GetFileName(path?.TrimEnd(DirectorySeparatorChar, AltDirectorySeparatorChar));
Giải thích GetFileName
từ nguồn .NET :
Trả về tên và phần mở rộng của đường dẫn đã cho. Chuỗi kết quả chứa các ký tự của đường dẫn theo dấu gạch chéo ngược cuối cùng ("\"), dấu gạch chéo ("/") hoặc ký tự dấu hai chấm (":") trong đường dẫn. Chuỗi kết quả là toàn bộ đường dẫn nếu đường dẫn không chứa dấu gạch chéo ngược sau khi xóa dấu gạch chéo, dấu gạch chéo hoặc ký tự dấu hai chấm. Chuỗi kết quả là null nếu đường dẫn là null.
Path.GetDirectoryName(@"c:\projects\roott\wsdlproj\devlop\beta2\text");
c:\projects\roott\wsdlproj\devlop\beta2
, và đó không phải là những gì OP đã có sau đó.