2013-08-05 123 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等)。