使用用户的用户名作为打开文件的路径

本文关键字:用户 文件 路径 | 更新日期: 2023-09-27 18:33:49

我最近不得不在C#中创建一个按钮,只需打开一个文本文件。这项工作很容易,直到我意识到我没有办法打开文件,为什么?好吧,仅仅是因为我想不出一种方法来在文件路径中"定义"用户名。

这是我尝试使用的代码:

private void button5_Click(object sender, EventArgs e)
{
    try
    {
        System.Diagnostics.Process.Start("C:''Users''%USERNAME%''AppData''Roaming''SchoolProject''file.txt");
    }
    catch { }
}

而且,它没有用。

那么这个问题的解决方案是什么?如果您想知道答案,请非常明确地说明,我是编程语言的新手,我不太了解代码。(如果可以,如果不是太多的问题,请在您的答案中包含应该有效的代码。

使用用户的用户名作为打开文件的路径

您需要扩展环境变量的使用: 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基类,然后您可以在调试器中记录/查看异常及其消息。

您可以通过Environment.SpecialFolders枚举和GetFolderPath方法访问所有这些"特殊"文件夹位置。

在您的情况下,您希望SpecialFolder.ApplicationData.像这样:

Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "test.txt");

所有特殊文件夹都可以在 MSDN 上找到。