我试图将文件保存到桌面,但每当我运行脚本时,它会将文件保存在go脚本所在的任何目录中。
这是我使用
的代码块func (d *downloader) downloadToFile(key string) {
// Create the directories in the path
// desktop path
desktop := "Desktop/" + d.dir
file := filepath.Join(desktop, key)
if err := os.MkdirAll(filepath.Dir(file), 0775); err != nil {
panic(err)
}
// Setup the local file
fd, err := os.Create(file)
if err != nil {
panic(err)
}
defer fd.Close()
// Download the file using the AWS SDK
fmt.Printf("Downloading s3://%s/%s to %s...\n", d.bucket, key, file)
params := &s3.GetObjectInput{Bucket: &d.bucket, Key: &key}
d.Download(fd, params)
_, e := d.Download(fd, params)
if e != nil {
panic(e)
}
}
我已尝试过这条路
desktop := "Desktop/" + d.dir
desktop := "/Desktop/" + d.dir
desktop := "Desktop/" + d.dir
desktop := "~/Desktop/ + d.dir
我似乎无法将文件保存到桌面,例如当我尝试时
desktop := "~/Desktop/ + d.dir
创建了一个目录~
,在~
桌面内创建,在桌面内创建了d.dir,并在那里创建了所有文件。我再次想要运行脚本,无论我在哪里运行它我都希望d.dir文件夹包含它的内容,因此可以在桌面上创建。
答案 0 :(得分:7)
您可以使用此功能查找当前用户个人资料 - https://godoc.org/os/user#Current
因此,根据您的操作系统,桌面将位于主目录中的相应文件夹中。
类似这样的事情
myself, error := user.Current()
if error != nill {
panic(error)
}
homedir := myself.HomeDir
desktop := homedir+"/Desktop/" + d.dir
还值得注意的是,有一个github.com/mitchellh/go-homedir
is a Go library for detecting the user's home directory without the use of cgo, so the library can be used in cross-compilation environments.
的图书馆
因此,使用它可以更好地使您的程序更便携。