Get path of directoryinfo object
Asked Answered
A

2

22

Writing some code in C#, I was wondering if there was a way to get the correct path of a directoryinfo object?

Currently I have, for example, a directory such as:

DirectoryInfo dirInfo = new DirectoryInfo(pathToDirectory);

The issue is that if I want to get the path of that specific dirInfo object, it always returns the debug path (bin folder). If the original dirInfo object is referencing a directory in the D:\testDirectory path, then I want a way to get that path again somewhere else in the code instead of getting \bin\debug\testDirectory

Is there any way to do this?

Currently I am trying to get the path of dirInfo using Path:

Console.WriteLine("Path: " + Path.GetFullPath(dirInfo.ToString()));
Alfrediaalfredo answered 19/11, 2013 at 17:48 Comment(10)
What is pathToDirectory? Is it D:\testDirectory or the debug path?Maximilien
how are you getting the path for dirInfo ?Talmudist
Can you please show code that you use to get "path of DirectoryInfo"? And for sample code try to use constant values where possible (i.e. what is value of pathToDirectory when your code does not work)Coauthor
@JustinPihony pathToDirectory is the string @"D:\testDirectory"Alfrediaalfredo
@AlexeiLevenkov Edited my code to show how I am trying to get the path.Alfrediaalfredo
so what are you getting if you try to print the path on console?Globule
so what is the exact problem , are you not able to get the proper path which was assigned to DirectoryInfo?Globule
You are either not showing your code OR don't know what is passed to it: Path.GetFullPath(new DirectoryInfo(@"D:\testDirectory ").ToString()) returns "D:\testDirectory" as expected. Please double check your sample.Coauthor
This isn't as silly as it might sound to some, I've had a similar problem: If you create a folder using Directory.CreateDirectory("some\\relative\\pathtest") it returns a DirectoryInfo instance, but if you call .ToString() on it then it will only return the same as the Name property, in this case: "pathtest" - which is really weird, you would expect CreateDirectory to pass on the original string - but it doesn't!Viscountess
...cont: Actually looking at the latest reference source it looks like they have fixed this? When I wonder - .net4.0 or 4.5? (Hasty look at source: appears it returns the full path now - so still not what you passed, but a lot better at least.)Viscountess
S
50

Try this.

string pathToDirctory = "D:\\testDirectory";
DirectoryInfo dirInfo = new DirectoryInfo(pathToDirctory);
string path = dirInfo.FullName;
Console.WriteLine(path);
Steck answered 19/11, 2013 at 17:54 Comment(3)
@user1806716 - note that this code behaves exactly the same as code that you claim to have - DirectoryInfoToString() "Returns the original path that was passed by the user."Coauthor
@AlexeiLevenkov: i think OP is sending the "testDirectory" relative path hence it is getting added to the current path(dubug folder).Globule
@user1806716 6 minutes... :)Fermin
H
3

A DirectoryInfo represents a particular directory. When you create it, what directory it represents is dependent on the path you give it. If you give it an absolute path like c:\foo\bar\baz\bat, that's the directory you get. If, on the other hand, you give it a relative path, like foo\bar\baz\bat, the path is relative to the process' current working directory. By default, that is inherited from the process that spawned the current process. Visual Studio starts a debug session and sets the CWD of the process being debugged to its bin directory. So if you create a DirectoryInfo and give it a path like testDirectory, you will get a DirectoryInfo about [project-root]\bin\Debug\testDirectory.

If you want an absolute path, you'll have to specify that absolute path. There aren't any shortcuts.

Hexose answered 19/11, 2013 at 17:58 Comment(1)
so here OP must be giving the Relative path to the DirectoryInfo instead of absolute path that is why he is getting path as=> projectfolder/bin/debug/DitestDirectory right?Globule

© 2022 - 2024 — McMap. All rights reserved.