我正在尝试找到一种与平台无关的方法来确定用户的下载文件夹。我正在使用 golang 的 fyne。到目前为止,我已经找到了一些有用的功能,但似乎无法将它们结合在一起。更重要的是,我不确定不同平台会出现什么问题。
os.Getwd()
获取工作目录的名称filepath.Dir()
后退一步并获取文件路径strings.Contains("filepath","downloads")
会告诉我文件路径中是否有“下载”天真地,我可能会做这样的事情:
path,_ := os.Getwd()
//count how far back
steps_back := -1
for strings.Contains(path,"downloads") { // runs as long as path has "downloads" in it
path = filepath.Dir(path)
steps_back++
}
downloads_path,_ := os.Getwd()
for step=0;step<steps_back;step++ {
downloads_path = filepath.Dir(downloads_path)
}
但是:
有什么想法吗?
我会尝试使用 os.UserHomeDir() 函数并在其下查找下载。它可能不适用于所有情况,用户可能能够在某种程度上自定义他们的默认下载目录,但它可能足以满足您需要做的事情。
package main
import (
"fmt"
"log"
"os"
)
var (
DownloadDirNames []string = []string{"Downloads", "downloads", "download", "Downloads", "etc..."}
)
func main() {
var downloadDir string
homeDir, err := os.UserHomeDir()
if err != nil {
log.Fatal(err)
}
for _, ddn := range DownloadDirNames {
var dir = filepath.Join(homeDir, ddn)
if _, err := os.Stat(dir); os.IsNotExist(err) {
fmt.Println(dir, "does not exist")
} else {
fmt.Println("The provided directory named", dir, "exists")
}
}
fmt.Println("Download Directory:", downloadDir)
}