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")); }}