在.NET中我正在写
Directory.CreateDirectory(textBox4.Text);
textBox4.Text是~/myfolder
。 我得到的是当前工作目录中的一个文件夹,名为〜with myfolder。 我如何让CreateDirectory在用户家中创build我的文件夹?
也许这个链接将帮助你。 它讨论单声道中的特殊文件夹。
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
标志来执行此扩展。
我最终使用这个
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);