英文:
golang save file to desktop
问题
我正在尝试将文件保存到我的桌面,但无论我运行脚本时,它都会将文件保存在go脚本所在的目录中。
这是我正在使用的代码块:
func (d *downloader) downloadToFile(key string) {
// 创建路径中的目录
// 桌面路径
desktop := "Desktop/" + d.dir
file := filepath.Join(desktop, key)
if err := os.MkdirAll(filepath.Dir(file), 0775); err != nil {
panic(err)
}
// 设置本地文件
fd, err := os.Create(file)
if err != nil {
panic(err)
}
defer fd.Close()
// 使用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的目录,在Desktop目录中创建了d.dir,并在其中保存了所有文件。再次强调,我想要运行脚本,无论在哪里运行,我都希望d.dir文件夹及其内容被创建在桌面上。
英文:
I'm trying to saving files to my desktop, however whenever I run my script it saves the file in whatever directory the go script is located in.
This is the chunk of code i'm working with
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)
}
}
I've tried the path
desktop := "Desktop/" + d.dir
desktop := "/Desktop/" + d.dir
desktop := "Desktop/" + d.dir
desktop := "~/Desktop/ + d.dir
I can't seem to get the files to save to the desktop, for instance when i tried
desktop := "~/Desktop/ + d.dir
A directory ~
was created, inside of ~
Desktop was created, inside of Desktop the d.dir was created, and in there all the files. Again I want to run the script an no matter where I run it I want to d.dir folder with it's contents so be created on the desktop.
答案1
得分: 8
你可以使用这个函数来找到当前用户的个人资料 - 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 的库,它是一个用于检测用户主目录的Go库,无需使用cgo,因此该库可以在交叉编译环境中使用。因此,使用它可以使你的程序更具可移植性。
英文:
You can find current user profile using this function - https://godoc.org/os/user#Current
So, depending on your OS, desktop will be in corresponding folder in home directory.
something like this
myself, error := user.Current()
if error != nil {
panic(error)
}
homedir := myself.HomeDir
desktop := homedir+"/Desktop/" + d.dir
also it is worth notice, that there is a github.com/mitchellh/go-homedir
library that 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.
So using it can be better to make your program more portable.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论