在.NET中我正在写
Directory.CreateDirectory(textBox4.Text);
textBox4.Text为~/myfolder
。我得到的是当前工作目录中名为〜with myfolder的文件夹。如何让CreateDirectory在用户家中创建myfolder?
答案 0 :(得分:3)
也许this link会对你有所帮助。它讨论了单声道的特殊文件夹。
答案 1 :(得分:2)
Tilde扩展通常由shell(http://www.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#tag_02_06_01)处理。
您可以执行bash -c "echo ~/folder"
之类的操作并获取输出。我不熟悉这样做的.NET API(甚至是C API),虽然我不得不想象一个人在那里。
我接受了 - glob()
C运行时函数(在Linux上)将采用GLOB_TILDE
标志来执行此扩展。
答案 2 :(得分:1)
我最终使用了这个
string GetHome()
{
string homePath = (Environment.OSVersion.Platform == PlatformID.Unix ||
Environment.OSVersion.Platform == PlatformID.MacOSX)
? Environment.GetEnvironmentVariable("HOME")
: Environment.ExpandEnvironmentVariables("%HOMEDRIVE%%HOMEPATH%");
return homePath;
}
var saveDirectory = textBox4.Text;
if (saveDirectory.StartsWith("~/"))
saveDirectory = GetHome() + saveDirectory.Substring(1);