2013-08-05 124 views
0

是否可以通過跨平臺方式獲取Go中的系統文件夾路徑?例如。臨時文件夾,「文件」文件夾等。在Go中獲取系統文件夾路徑?

我發現ioutil.TempFolder/File但他們做了一些不同的事情。任何想法?

+1

對於每個Windows的標準文件夾的,什麼是對應的Linux文件夾和相應的OS-X文件夾? [Windows已知文件夾](http://msdn.microsoft.com/en-us/library/windows/desktop/dd378457.aspx) – peterSO

+0

我認爲@ peterSO的觀點是,對於每個Linux系統文件夾可能沒有好的模擬在Windows中,或者在Mac中用於Windows等。系統文件夾通常不被認爲是不同系統中的變體,例如文件就是這樣。例如,在Windows和Linux上,雖然處理文件的界面可能略有不同,但它們基本上具有相同的基本概念 - 讀取和寫入。另一方面,系統文件夾並不完全類似於另一個。 – joshlf

+0

我知道並非所有特殊文件夾都適用於所有系統。但是幾乎所有的系統都是當前用戶的「temp」或「home」文件夾。的確,許多庫(如Qt)都提供了一種以跨平臺方式訪問這些文件夾的方法(http://qt-project.org/doc/qt-5.0/qtcore/qstandardpaths.html)。我想它在Go中還不存在。 –

回答

1

目前沒有辦法以跨平臺的方式訪問標準系統文件夾。主目錄,雖然可以訪問使用user package

u, _ := user.Current() 
fmt.Println(u.HomeDir) 
2

內置選項尚不存在。您最好的選擇是open an issue並提交功能請求。

與此同時,您可以使用platform specific +build flags自行添加支持。有了你有兩個選擇:

  1. 使用os package獲得的信息對每個系統,可能通過外殼。
  2. 使用cgo與現有的C/C++方法。請參閱this answer,其中解釋瞭如何使用C++ for Windows獲取此信息。

閱讀os軟件包的源代碼以瞭解如何獲取特定於平臺的信息也可能有所幫助。這可以幫助您設計一種獲取這些信息的方式,並且可能會提交一個包含的補丁。

+0

這是在2013年問的,有沒有更新? – Acidic

1

除了盧克提到的方法,在Windows上,你可以從environment variables得到一些路徑。同樣適用於Unix($ HOME等)。