.NET上的linux,〜/文件夹错了?

时间:2010-07-19 20:33:05

标签: .net linux mono

在.NET中我正在写

Directory.CreateDirectory(textBox4.Text);

textBox4.Text为~/myfolder。我得到的是当前工作目录中名为〜with myfolder的文件夹。如何让CreateDirectory在用户家中创建myfolder?

3 个答案:

答案 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);