Nếu bạn có một đường dẫn đầy đủ như: "C:\dir0\dir1\dir2\dir3\dir4\"
làm thế nào bạn thực hiện tốt nhất để tất cả các thư mục có mặt?
Có một phương pháp cho điều này trong BCL? Nếu không, cách thanh lịch nhất để làm điều này là gì?
Nếu bạn có một đường dẫn đầy đủ như: "C:\dir0\dir1\dir2\dir3\dir4\"
làm thế nào bạn thực hiện tốt nhất để tất cả các thư mục có mặt?
Có một phương pháp cho điều này trong BCL? Nếu không, cách thanh lịch nhất để làm điều này là gì?
Câu trả lời:
Tôi sẽ gọi Directory.CreateDirectory(@"C:\dir0\dir1\dir2\dir3\dir4\")
.
Trái với niềm tin phổ biến, Directory.CreateDirectory
sẽ tự động tạo ra bất kỳ thư mục gốc nào không tồn tại.
Theo cách nói của MSDN,Creates all directories and subdirectories as specified by path.
Nếu toàn bộ đường dẫn đã tồn tại, nó sẽ không làm gì cả. (Nó sẽ không ném ngoại lệ)
Path.GetDirectoryName
để có được nó.
Tạo thư mục từ filepath hoàn chỉnh
private String EvaluatePath(String path){
try
{
String folder = Path.GetDirectoryName(path);
if (!Directory.Exists(folder))
{
// Try to create the directory.
DirectoryInfo di = Directory.CreateDirectory(folder);
}
}
catch (IOException ioex)
{
Console.WriteLine(ioex.Message);
return "";
}
return path;
}