2010-07-19 18 views
5

Trong .NET tôi đang viết.NET trên linux, ~/folder là sai?

Directory.CreateDirectory(textBox4.Text); 

textBox4.Text là ~/myfolder. Những gì tôi nhận được là một thư mục trong thư mục làm việc hiện tại được gọi là ~ với myfolder trong đó. Làm thế nào để tôi có CreateDirectory tạo myfolder tại nhà của người dùng?

Trả lời

1

Tôi sẽ sử dụng số này

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

Có lẽ this link sẽ giúp bạn. Nó thảo luận về các thư mục đặc biệt trong mono.

2

Mở rộng dấu ngã thường được xử lý bởi vỏ (http://www.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#tag_02_06_01).

Bạn có thể làm điều gì đó như bash -c "echo ~/folder" và lấy đầu ra. Tôi không quen thuộc với một NET API. (Hoặc thậm chí là một API C) mà thực hiện điều này, mặc dù tôi phải tưởng tượng rằng một là ra khỏi đó một nơi nào đó.

Tôi lấy lại - chức năng thời gian chạy glob() C (trên Linux) sẽ lấy cờ GLOB_TILDE để thực hiện việc mở rộng này.

Các vấn đề liên quan