loading...

File Path Handling in D

github logo Updated on ・1 min read

Toolbox (7 Part Series)

1) Parsing a String in D 2) Slicing and Dicing Arrays in D 3 ... 5 3) Execute a Program in D 4) File Path Handling in D 5) List Comprehension in D 6) Printing in D 7) Regular Expressions 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);

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");
twitter logo DISCUSS
Classic DEV Post from Apr 30 '19

Who's looking for open source contributors? (April 30th edition)

Jesse Phillips profile image
Senior Quality Assurance (SDET) starting to establish a larger presence in communities.