Tôi có một vấn đề đơn giản. Tôi có một đường dẫn đến một tập tin trong thư mục người dùng trông như thế này:C# mở tập tin, đường dẫn bắt đầu với% userprofile%
%USERPROFILE%\AppData\Local\MyProg\settings.file
Khi tôi cố gắng để mở nó như một tập tin
ostream = new FileStream(fileName, FileMode.Open);
Nó spits lỗi vì nó cố gắng thêm %userprofile%
đến hiện tại thư mục, vì vậy nó trở thành:
C:\Program Files\MyProg\%USERPROFILE%\AppData\Local\MyProg\settings.file
làm thế nào để làm cho nó nhận ra rằng một con đường bắt đầu với %USERPROFILE%
là một tuyệt đối, không phải là một đường dẫn tương đối?
PS: Tôi không thể sử dụng
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
Bởi vì tôi cần phải chỉ cần mở tập tin bằng tên của nó. Người dùng chỉ định tên. Nếu người dùng chỉ định "settings.file", tôi cần mở tệp có liên quan đến thư mục chương trình, nếu người dùng chỉ định đường dẫn bắt đầu bằng %USERPROFILE%
hoặc một số thứ khác chuyển đổi thành C: \ gì đó, tôi cũng cần mở nó!
Tại sao không chỉ 'Environment.GetFolderPath (Environment.SpecialFolder.LocalApplicationData)'? –
Vì đây là tổng quát hơn - bạn giả thiết rằng biến môi trường được truyền vào sẽ luôn là '% USERPROFILE%' - nếu nó là cái gì khác? (đó là những gì câu hỏi đang hỏi - đó là yêu cầu về việc mở rộng biến môi trường - ví dụ được sử dụng là hồ sơ người dùng là ngẫu nhiên). – Oded
Ahh, tôi hiểu rồi. Ví dụ xấu OP đã cho –