I need to create a given nested directory structure using Go, but I couldn't figure out the most practical and idiomatic way to do that. Some inspiration:
Bash: mkdir -p some/deep/path
C# : IO.Directory.CreateDirectory(@"some/deep/path")
PHP : mkdir("some/deep/path", 0777, true)
Java: new File("some/deep/path").mkdirs()
Go : ?
Requirement is that operation should be silent if path is already in place (just like in the other language examples).
You can try and see if os.MkdirAll
does create all the folder that you need.
MkdirAll
creates a directory named path, along with any necessary parents, and returnsnil
, or else returns an error.
The permission bits perm are used for all directories thatMkdirAll
creates.
If path is already a directory,MkdirAll
does nothing and returnsnil
.
See its test class.
Note that, when you look at its implementation, MkdirAll
isn't exactly "atomic".