I have a simple problem. I have a path to a file in user directory that looks like this:
%USERPROFILE%\AppData\Local\MyProg\settings.file
When I try to open it as a file
ostream = new FileStream(fileName, FileMode.Open);
It spits error because it tries to add %userprofile%
to the current directory, so it becomes:
C:\Program Files\MyProg\%USERPROFILE%\AppData\Local\MyProg\settings.file
How do I make it recognise that a path starting with %USERPROFILE%
is an absolute, not a relative path?
PS: I cannot use
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
Because I need to just open the file by its name. User specifies the name. If user specifies "settings.file", I need to open a file relative to program dir, if user specifies a path starting with %USERPROFILE%
or some other thing that converts to C:\something, I need to open it as well!
Use Environment.ExpandEnvironmentVariables
on the path before using it.
var pathWithEnv = @"%USERPROFILE%\AppData\Local\MyProg\settings.file"; var filePath = Environment.ExpandEnvironmentVariables(pathWithEnv); using(ostream = new FileStream(filePath, FileMode.Open)) { //... }
Try using ExpandEnvironmentVariables on the path.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With