- Published on
Don't you wish Path.Combine supported multiple arguments out of the box?
- Authors
-
-
- Name
- David Mohundro
- Bluesky
- @david.mohundro.com
-
I’ve found myself wishing that I could pass in more than two arguments to Path.Combine. That is, something like this:
Path.Combine(rootPath, someCalculatedPath, someKnownFileName);
As it is, Path.Combine only accepts two arguments, so I end up with calls that look like this:
Path.Combine(Path.Combine(rootPath, comeCalculatedPath), someKnownFileName);
It seems like a hassle to me. Here is a simple wrapper function (with accompanying test) that will accomplish this:
public static class FileUtils
{
public static string CombinePaths(params string[] paths)
{
if (paths.Length == 0) return string.Empty;
return Path.Combine(paths.First(), CombinePaths(paths.Skip(1).ToArray()));
}
}
[TestFixture]
public class FileUtilsTests
{
[Test]
public void Should_combine_paths_correctly()
{
string expected = @"c:\some\path\to\file.txt";
Assert.AreEqual(expected, FileUtils.CombinePaths("c:\\some", "path\\to", "file.txt"));
}
}