2015-12-19 88 views
0

我試圖將文件保存到我的桌面,但是每當我運行我的腳本它保存在文件中的任何目錄中去腳本位於英寸golang保存文件到桌面

這是代碼塊我「M與

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文件夾的內容,以便在桌面上創建。

回答

3

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

所以,根據您的操作系統,桌面將在主目錄中對應的文件夾。

像這樣

myself, error := user.Current() 
    if error != nill { 
    panic(error) 
    } 
    homedir := myself.HomeDir 
    desktop := homedir+"/Desktop/" + d.dir 

也是很值得的通知,有是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. 因此,使用它可以更好地使你的程序的可移植性,github.com/mitchellh/go-homedir 庫。

+0

真棒謝謝你。我仍然在學習核心庫。我一直在使用python。 – reticentroot

+0

@msanti,而不是在未來的Windows版本中,它會決定將「桌面」重命名爲其他內容。真正的方法是使用Windows shell集成API的「特殊文件夾」工具來獲取桌面文件夾在您的程序運行的Windows上的位置。不幸的是,這需要C,Windows API中的某些技能,並從Go中調用它(後者很簡單)。我會在[go-nuts郵件列表](https://groups.google.com/group/golang-nuts)上提問。 – kostix

+0

哦,沒關係。我是一個Linux,Unix用戶,這是該腳本將保持大聲笑 – reticentroot

相關問題