我正在开发一个程序,用于从Internet检索用户的文件。当我设置下载路径时,要么没有任何反应,要么Visual Studio告诉我我的路径无法写入。以下是我尝试过的路径:
(@"%USERNAME%\Downloads\");
(@"%USERPROFILE%\Downloads\");
(@"C:\Users\%USERNAME%\Downloads\");
(@"C:\Users\%USERPROFILE%\Downloads\");
更奇怪的是,使用(@"%USERPROFILE%\Downloads\");
将下载的文件放在与%USERPROFILE%
文件夹中的程序文件夹相同的文件夹中。我之前在批处理脚本中使用%USERPROFILE%
没有问题,它是否是C#中不同的通配符?我在这里缺少什么?
答案 0 :(得分:1)
%Variablename%是批处理语法。在c#中,您必须手动解析环境变量。
请参阅https://msdn.microsoft.com/de-de/library/77zkk0b6(v=vs.110).aspx
答案 1 :(得分:1)
C#不会自动从字符串中扩展环境变量。这样做可能会对其他问题产生严重的安全隐患。
在尝试文件操作之前,您需要使用Environment.ExpandEnvironmentVariables
方法,例如;
using system;
void Main()
{
String DownloadPath= @"%USERPROFILE%\Downloads\";
String ExpandedDownloadPath = Environment.ExpandEnvironmentVariables(DownloadPath);
Console.WriteLine("ExpandedPath: {0}", ExpandedDownloadPath);
}
显然,这更多是StackOverflow(编程)问题