DEV Community πŸ‘©β€πŸ’»πŸ‘¨β€πŸ’»

DEV Community πŸ‘©β€πŸ’»πŸ‘¨β€πŸ’» is a community of 966,155 amazing developers

We're a place where coders share, stay up-to-date and grow their careers.

Create account Log in
Jesse Phillips
Jesse Phillips

Posted on • Updated on

File Path Handling in D

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.

std.path

import std.path;
buildNormalizedPath("foo/bar/../peas"
            .absolutePath.expandTilde);
Enter fullscreen mode Exit fullscreen mode

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)));
Enter fullscreen mode Exit fullscreen mode

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");
Enter fullscreen mode Exit fullscreen mode

Top comments (0)

🌚 Friends don't let friends browse without dark mode.

Good news! You can update to dark mode in your DEV settings.