web-dev-qa-db-ja.com

C#で単一のフルパスから複数のディレクトリを作成する方法は?

次のようなフルパスがある場合:"C:\dir0\dir1\dir2\dir3\dir4\"すべてのディレクトリが存在するように、どのように実装するのが最適ですか?

BCLでこれを行う方法はありますか?そうでない場合、これを行う最もエレガントな方法は何ですか?

145
Joan Venge

Directory.CreateDirectory(@"C:\dir0\dir1\dir2\dir3\dir4\")を呼び出します。

一般的な信念に反して、 Directory.CreateDirectory は、存在しない親ディレクトリを自動的に作成します。
MSDNの言葉では、Creates all directories and subdirectories as specified by path.

パス全体が既に存在する場合、何も実行されません。 (例外をスローしません)

317
SLaks

完全なファイルパスからディレクトリを作成する

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;
}
2