Jeśli masz pełną ścieżkę, taką jak: "C:\dir0\dir1\dir2\dir3\dir4\"
jak najlepiej ją zaimplementować, aby wszystkie katalogi były obecne?
Czy istnieje na to metoda w BCL? Jeśli nie, jaki jest najbardziej elegancki sposób na zrobienie tego?
Jeśli masz pełną ścieżkę, taką jak: "C:\dir0\dir1\dir2\dir3\dir4\"
jak najlepiej ją zaimplementować, aby wszystkie katalogi były obecne?
Czy istnieje na to metoda w BCL? Jeśli nie, jaki jest najbardziej elegancki sposób na zrobienie tego?
Odpowiedzi:
Zadzwoniłbym Directory.CreateDirectory(@"C:\dir0\dir1\dir2\dir3\dir4\")
.
Wbrew powszechnemu przekonaniu, Directory.CreateDirectory
automatycznie utworzy katalogi nadrzędne, które nie istnieją.
Słowami MSDN,Creates all directories and subdirectories as specified by path.
Jeśli cała ścieżka już istnieje, nic nie da. (To nie zgłosi wyjątku)
Path.GetDirectoryName
po to.
Twórz katalogi na podstawie pełnej ścieżki pliku
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;
}