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 Path
và FileInfo
cả hai được tìm thấy trong không gian tên System.IO
.
new FileInfo(path).Directory.FullName
nê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 FileInfo
và sử dụng FileInfo.Directory
.
Nếu bạn đang làm những việc khác với con đường, FileInfo
có 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.GetDirectoryName
và 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 DirectoryName
tính.
Mô tả FileInfo.DirectoryName
tà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.GetFullPath
cho 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 directory
như"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 Path
cá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"