为了账号安全,请及时绑定邮箱和手机立即绑定

golang 保存文件到桌面

golang 保存文件到桌面

Go
白猪掌柜的 2021-11-29 16:43:09
我正在尝试将文件保存到我的桌面,但是每当我运行我的脚本时,它都会将文件保存在 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.dirdesktop := "/Desktop/" + d.dirdesktop := "Desktop/" + d.dirdesktop := "~/Desktop/ + d.dir我似乎无法将文件保存到桌面,例如当我尝试desktop := "~/Desktop/ + d.dir~创建了一个目录,在~桌面内部创建了桌面,在桌面内部创建了 d.dir,所有文件都在那里。再次,我想运行脚本,无论我在哪里运行它,我想将其内容放在 d.dir 文件夹中,以便在桌面上创建。
查看完整描述

1 回答

?
暮色呼如

TA贡献1853条经验 获得超9个赞

您可以使用此功能查找当前用户配置文件 - https://godoc.org/os/user#Current


因此,根据您的操作系统,桌面将位于主目录中的相应文件夹中。


像这样的东西


   myself, error := user.Current()

   if error != nil {

     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. 因此使用它可以更好地使您的程序更具可移植性。


查看完整回答
反对 回复 2021-11-29
  • 1 回答
  • 0 关注
  • 166 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信