如何在%appdata%中创建目录

时间:2016-05-18 05:56:22

标签: c# directory

我想在%appdata%文件夹中创建一个目录。这就是我到目前为止所做的:

public MainForm() {
    Directory.CreateDirectory(@"%appdata%\ExampleDirectory");
}

这不起作用,但它也不会崩溃或显示任何类型的错误。我该怎么做呢?我做过研究,如果我使用实际路径它确实有效:

Directory.CreateDirectory(@"C:\Users\username\AppData\Roaming\ExampleDirectory");

但是,当我使用%appdata%时,它不起作用。这是有问题的,因为我不知道使用该程序的人的用户名,因此我无法使用完整路径。

我也试过这个:

var appdata = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
var Example = Path.Combine(appdata, @"\Example");
Directory.CreateDirectory(Example);

它也不起作用

4 个答案:

答案 0 :(得分:4)

string folder = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);

// Combine the base folder with your specific folder....
string specificFolder = Path.Combine(folder, "YourSpecificFolder");

// Check if folder exists and if not, create it
if(!Directory.Exists(specificFolder)) 
    Directory.CreateDirectory(specificFolder);

答案 1 :(得分:1)

这样的东西?

 var appData = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
var path = Path.Combine(appData, @"\ExampleDirectory");
Directory.CreateDirectory(path);

答案 2 :(得分:1)

尝试:

string example = Environment.ExpandEnvironmentVariables(@"%AppData%\Example");
Directory.CreateDirectory(example);

Environment.ExpandEnvironmentVariables()将用其值(通常为AppData)替换环境变量C:\Users\<Username>\Appdata\Roaming

要获取环境变量的列表,请在命令行中不带任何参数的情况下运行set命令。

答案 3 :(得分:0)

您可以使用Environment.GetFolderPath()Environment.SpecialFolder.ApplicationData

string appDatafolder = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData));
string folder = Path.Combine(appDatafolder, "ExampleDirectory");
Directory.CreateDirectory(folder);

这将在C:\Users\<userName>\AppData\Roaming

下创建文件夹

使用SpecialFolder.LocalApplicationData代替AppData\Local

要使AppData仅使用:

string appDatafolder = Path.GetDirectoryName(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)));

有关详细信息,请参阅MSDN上的Environment.SpecialFolderEnvironment.GetFolderPath()