使用 Go 高效下載大檔案
在記憶體中儲存大檔案可能會壓垮電腦的資源。在 Go 中,我們如何直接下載此類文件,避免這種記憶體限制?
答案:
假設透過 HTTP 下載:
import ( "net/http" "io" "os" ) func DownloadFile(url, filepath string) (int64, error) { // Open the destination file out, err := os.Create(filepath) if err != nil { return 0, err } defer out.Close() // Start the HTTP request resp, err := http.Get(url) if err != nil { return 0, err } defer resp.Body.Close() // Stream the response body into the file (avoiding full buffering) n, err := io.Copy(out, resp.Body) if err != nil { return 0, err } return n, nil }
這個方法利用 HTTP 的回應主體作為 Reader。像 io.Copy() 這樣的函數可以在此 Reader 上進行操作,使我們能夠分塊處理回應。
以上是Go中如何有效率地下載大檔案而不佔記憶體?的詳細內容。更多資訊請關注PHP中文網其他相關文章!