Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Best practice for building file paths in C#

I'm working on a C# project where I must build paths to various files and folders. These are all under one root folder which I have specified in my Web.config file.

For example:

  1. "start with: "D:\builds\" from my Web.config
  2. Pass to GetRelativePath() to get "D:\builds\5.2\5.2.9751"
  3. Then pass to GetAutoSuitePath() to get "D:\builds\5.2\5.2.9751\AutoSuite\"
  4. Then pass to ParseBrLog which will read "D:\builds\5.2\5.2.9751\AutoSuite\AASanity.csv"

My paths are correct, but I just want to know what the best practice is for incomplete paths. Should I add a "\" to the end of every folder ("D:\Builds\5.2\" + "test.txt"), or add one to the start of every folder/file I add to the path ("D:\Builds" + "\5.2" + "\test.txt")? Currently, I'm, doing it both ways, and want to choose one uniform way of doing it.

like image 456
zalpha314 Avatar asked May 22 '12 14:05

zalpha314


People also ask

What is a file path example?

A path is either relative or absolute. An absolute path always contains the root element and the complete directory list required to locate the file. For example, /home/sally/statusReport is an absolute path. All of the information needed to locate the file is contained in the path string.

For what purpose file paths are used?

A file path describes the location of a file in a web site's folder structure. File paths are used when linking to external files, like: Web pages. Images.


2 Answers

Use the Path class to build up your paths. It will do the right thing.

Performs operations on String instances that contain file or directory path information. These operations are performed in a cross-platform manner.

var full = Path.Combine(baseDir, dirFragment); 
like image 140
Oded Avatar answered Sep 22 '22 16:09

Oded


Use Path.Combine to concatenate path tokens.

If the path is a file to set/change the extension use Path.ChangeExtension.

like image 42
Matteo Migliore Avatar answered Sep 22 '22 16:09

Matteo Migliore