2010-07-19 13 views

Odpowiedz

1

skończę za pomocą tego

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); 
2

Ekspansja tyldy jest zwykle obsługiwana przez powłokę (http://www.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#tag_02_06_01).

Można zrobić coś takiego, jak bash -c "echo ~/folder" i pobrać dane wyjściowe. Nie jestem zaznajomiony z .NET API (lub nawet C API), który to robi, choć muszę sobie wyobrazić, że gdzieś tam jest.

Przyjmuję z powrotem - funkcja wykonawcza C (na Linux) C glob() potrzebuje flagi GLOB_TILDE, aby wykonać to rozszerzenie.