Toolbox (7 Part Series)
Working with file paths is very annoying, especially on Windows where it supports both separators most of the time.
Aside from deciding which slash to use there are a couple of areas to consider.
- Home directory
- Relative vs absolute
D provides quick work of these.
import std.path; buildNormalizedPath("foo/bar/../peas" .absolutePath.expandTilde);
However trying to build a path by adding slash separators is not the best choice for building a path from variables.
auto a = "foo"; auto b = "bar"; assert([a, b].joiner("/").equal(a.buildPath(b)));
And further work can be done on extensions.
assert("file.ext".extension == ".ext"); assert("file.ext".setExtension("gif") == "file.gif"); assert("file.ext".stripExtension == "file");