Cách đơn giản nhất để có được thư mục chứa một tập tin là gì? Tôi đang sử dụng điều này để thiết lập một thư mục làm việc.
string filename = @"C:\MyDirectory\MyFile.bat";
Trong ví dụ này, tôi sẽ nhận được "C: \ MyDirectory".
Cách đơn giản nhất để có được thư mục chứa một tập tin là gì? Tôi đang sử dụng điều này để thiết lập một thư mục làm việc.
string filename = @"C:\MyDirectory\MyFile.bat";
Trong ví dụ này, tôi sẽ nhận được "C: \ MyDirectory".
Câu trả lời:
Nếu bạn chắc chắn có một con đường tuyệt đối, hãy sử dụng Path.GetDirectoryName(path).
Nếu bạn chỉ có thể có được một tên tương đối, sử dụng new FileInfo(path).Directory.FullName.
Lưu ý rằng Pathvà FileInfocả hai được tìm thấy trong không gian tên System.IO.
new FileInfo(path).Directory.FullNamenên hoạt động trong cả hai trường hợp.
Bạn có thể sử dụng System.IO.Path.GetDirectory(filename)hoặc biến đường dẫn thành a FileInfovà sử dụng FileInfo.Directory.
Nếu bạn đang làm những việc khác với con đường, FileInfocó thể có lợi thế.
Sử dụng mã được đề cập dưới đây để có được đường dẫn thư mục
Path.GetDirectoryName(filename);
Điều này sẽ trả về "C: \ MyDirectory" trong trường hợp của bạn
Bạn có thể sử dụng Path.GetDirectoryNamevà chỉ cần vượt qua trong tên tệp.
Nếu bạn đang làm việc với một FileInfođối tượng, thì có một cách dễ dàng để trích xuất một stringđại diện cho đường dẫn đầy đủ của thư mục thông qua thuộc DirectoryNametính.
Mô tả FileInfo.DirectoryNametài sản thông qua MSDN:
Nhận một chuỗi đại diện cho đường dẫn đầy đủ của thư mục.
Sử dụng mẫu:
string filename = @"C:\MyDirectory\MyFile.bat";
FileInfo fileInfo = new FileInfo(filename);
string directoryFullPath = fileInfo.DirectoryName; // contains "C:\MyDirectory"
Liên kết đến tài liệu MSDN .
Bạn có thể nhận Đường dẫn ứng dụng hiện tại bằng cách sử dụng:
string AssemblyPath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location).ToString();
Chúc may mắn!
Bạn có thể sử dụng Path.GetFullPathcho hầu hết các trường hợp. Nhưng nếu bạn muốn có được đường dẫn trong trường hợp tên tệp tương đối nằm thì bạn có thể sử dụng phương thức chung dưới đây:
string GetPath(string filePath)
{
return Path.GetDirectoryName(Path.GetFullPath(filePath))
}
Ví dụ:
GetPath("C:\Temp\Filename.txt") trở về "C:\Temp\"
GetPath("Filename.txt")trở lại current working directorynhư"C:\Temp\"
Trong trường hợp của tôi, tôi cần tìm tên thư mục của một đường dẫn đầy đủ (của một thư mục) vì vậy tôi chỉ cần làm:
var dirName = path.Split('\\').Last();
"C:\MyDirectory"và không MyDirectory. Lời khuyên để sử dụng các phương pháp thao tác chuỗi là rủi ro, có nhiều bẫy, thay vì sử dụng Pathcác phương pháp chuyên dụng .
Path.GetDirectoryName (Context.Parameter ["assemblypath"])
Path.GetDirectoryNameđược đề cập trong nhiều câu trả lời khác (bao gồm cả câu trả lời được chấp nhận)
@"C:\MyDirectory\MyFile.bat"