[C# Helper]
Index Books FAQ Contact About Rod
[Beginning Database Design Solutions, Second Edition]

[Beginning Software Engineering, Second Edition]

[Essential Algorithms, Second Edition]

[The Modern C# Challenge]

[WPF 3d, Three-Dimensional Graphics with WPF and C#]

[The C# Helper Top 100]

[Interview Puzzles Dissected]

[C# 24-Hour Trainer]

[C# 5.0 Programmer's Reference]

[MCSD Certification Toolkit (Exam 70-483): Programming in C#]

Title: Combine and resolve relative paths in C#

combining directory paths

Often it's useful for a C# program to combine relative paths. For example, when you build a program in Visual Studio, the executable program runs in the bin\Debug subdirectory below the source code directory. If you want to manipulate a file that is in the same directory as the project's source code, you need to move two level up the directory tree from the executable program's location.

The System.IO.Path class provides several static methods for manipulating file paths. The Combine method combines two paths.

Unfortunately that method simply concatenates the paths. For example, C:\Data\Test plus ..\data.txt gives C:\Data\Test\..\data.txt, which is probably not what you want. The .. part of the path moves to the parent directory, so what you probably want in this example is C:\Data\data.txt.

Fortunately the Path class's GetFullPath method resolves a path that contains relative elements such as this one and returns an absolute path.

The following code shows how the program combines two paths that you enter.

txtResult.Text = Path.GetFullPath( Path.Combine(txtPath1.Text, txtPath2.Text));

You can use a similar technique to combine paths in your programs. For example, a program running in Visual Studio can use the following code to find the path to its source code directory.

Console.WriteLine(Path.GetFullPath( Path.Combine(Application.StartupPath, "..\\..")));

Note that the GetFullPath method uses both the \ and / characters as directory delimiters, so the following code also works.

Console.WriteLine(Path.GetFullPath( Path.Combine(Application.StartupPath, "../..")));

Download the example to experiment with it and to see additional details.

© 2009-2023 Rocky Mountain Computer Consulting, Inc. All rights reserved.