我最近不得不在C#中创建一个只需打开文本文件的按钮。这项工作很容易,直到我意识到我没有想法如何打开文件,为什么?好吧,因为我无法想到在文件路径中“定义”用户名的方法。
以下是我尝试使用的代码:
private void button5_Click(object sender, EventArgs e)
{
try
{
System.Diagnostics.Process.Start("C:\\Users\\%USERNAME%\\AppData\\Roaming\\SchoolProject\\file.txt");
}
catch { }
}
而且,它没有用。
那么这个问题的解决方案是什么?如果你想知道答案,请非常明确,我是编程语言的新手,我不太了解这些代码。 (如果可以,如果问题不是太多,请在答案中加入适用的代码。)
答案 0 :(得分:1)
您可以通过Environment.SpecialFolders
枚举和GetFolderPath
方法访问所有这些“特殊”文件夹位置。
在您的情况下,您需要SpecialFolder.ApplicationData
。类似的东西:
Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "test.txt");
可以在MSDN上找到所有特殊文件夹。
答案 1 :(得分:1)
您需要扩展环境变量使用:Environment.ExpandEnvironmentVariables
替换嵌入的每个环境变量的名称 指定字符串,其字符串的值等于 变量,然后返回结果字符串。
Environment.ExpandEnvironmentVariables("C:\\Users\\%USERPROFILE%\\AppData\\Roaming\\SchoolProject\\file.txt");
这将为您提供确切的路径。
所以你的代码可能是:
string filePath = Environment.ExpandEnvironmentVariables("C:\\Users\\%USERPROFILE%\\AppData\\Roaming\\SchoolProject\\file.txt");
System.Diagnostics.Process.Start(filePath);
此外,拥有一个空try-catch
将无法帮助您确定异常,捕获特定异常或至少基类Exception
然后您可以在异常时记录/查看调试器它的消息。