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


162

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

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

回答:


346

電話しますDirectory.CreateDirectory(@"C:\dir0\dir1\dir2\dir3\dir4\")

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

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


3
ありがとう、私はこれを知りませんでした。パスは、ファイルパスではなく、ディレクトリパスである必要がありますよね?
Joan Venge、2010年

27
@ジョアン:はい; あなたはPath.GetDirectoryNameそれを取得するために呼び出すことができます。
10

2
CreateDirectoryTreeを呼び出す必要があります
OldSchool 2017

3

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

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;
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.