我想在Go语言中得到文件系统的根目录,这样它就可以在Windows和Unix上工作。
我想我可以做一些
func fsRootDir() string {
s := os.Getenv("SystemDrive")
if s != "" {
return s
}
return "/"
}
然而,这有几个问题,所以我拒绝了这种方法:
- 用户可以在Unix上使用一些虚假路径创建
SystemDrive
环境变量。 - 用户可以将Windows上
SystemDrive
环境变量的值更改为某个虚假路径。
我查看了this answer to a related question,但这也有一些问题:
- 第一个选项依赖于
SystemDrive
环境变量,由于上述原因,该环境变量在Unix或Windows上不能保证保存预期值。 - 此答案中的所有其他选项都依赖于
os.TempDir
。在Windows上,os.TempDir
使用GetTempPath
,返回%TMP%
、%TEMP%
、%USERPROFILE%
或Windows目录中的第一个非空值。我不相信这些环境变量没有被修改。
我也考虑过
func fsRootDir() string {
if runtime.GOOS == "windows" {
return "C:"
}
return "/"
}
但我想我在什么地方读到过,可以将Windows上的文件系统根目录更改为C:
以外的其他内容。
我怎样才能获得一个文件系统的根目录,使它在Windows和Unix上都能工作?
1条答案
按热度按时间eit6fx6z1#
为什么不把两者结合起来呢?
用户可以将Windows上SystemDrive环境变量的值更改为某个虚假路径。
不,他们不能,
SystemDrive
是只读变量。