我想在%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);
它也不起作用
答案 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.SpecialFolder
和Environment.GetFolderPath()