Tengo un problema simple. Tengo una ruta a un archivo en el directorio de usuario que tiene este aspecto:C# abrir archivo, ruta que comienza con% userprofile%
%USERPROFILE%\AppData\Local\MyProg\settings.file
Cuando intento abrir como un archivo
ostream = new FileStream(fileName, FileMode.Open);
Escupe error porque intenta añadir %userprofile%
a la corriente directorio, por lo que se convierte en:
C:\Program Files\MyProg\%USERPROFILE%\AppData\Local\MyProg\settings.file
¿Cómo hago que reconocer que una ruta que comienza con %USERPROFILE%
es una, no una ruta relativa absoluta?
PS: No puedo usar
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
Porque necesito simplemente abrir el archivo por su nombre. El usuario especifica el nombre. Si el usuario especifica "settings.file", necesito abrir un archivo relativo al directorio del programa, si el usuario especifica una ruta que comienza con %USERPROFILE%
o alguna otra cosa que se convierta en C: \ something, ¡también tengo que abrirla!
¿Por qué no simplemente 'Environment.GetFolderPath (Environment.SpecialFolder.LocalApplicationData)'? –
Como esto es más general, está asumiendo que la variable de entorno transferida siempre será '% PERFIL DE USUARIO%' - ¿Y si es algo más? (que es lo que hace la pregunta, pregunta sobre la ampliación de la variable de entorno), que el ejemplo utilizado es el perfil de usuario incidental). – Oded
Ahh, ya veo. Mal ejemplo, el OP dio –