我正在尝试将文件保存到我的桌面,但每当我运行我的脚本时,它会将文件保存在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
~
创建了一个目录,在~
Desktop 内创建了一个目录,在桌面内创建了d.dir,并在那里创建了所有文件.我再次想要运行脚本无论我在哪里运行它我想要d.dir文件夹及其内容所以在桌面上创建.
您可以使用此功能找到当前用户配置文件 - 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.
所以使用它可以更好地使您的程序更便携.