[解決済み] Goを使って大きなファイルを効率よくダウンロードするにはどうしたらいいですか?
2022-08-05 20:01:52
質問
Go を使用して大きなファイルをダウンロードするとき、ファイルに書き込む前にすべてをメモリに格納するのではなく、内容を直接ファイルに格納する方法はありますか? ファイルが非常に大きいので、ファイルに書き込む前にすべてをメモリに格納すると、メモリをすべて使ってしまいそうです。
どのように解決するのですか?
http経由でのダウンロードのことだと思われます(簡潔のためエラーチェックは省略します)。
import ("net/http"; "io"; "os")
...
out, err := os.Create("output.txt")
defer out.Close()
...
resp, err := http.Get("http://example.com/")
defer resp.Body.Close()
...
n, err := io.Copy(out, resp.Body)
http.ResponseのBodyはReaderなので、Readerを受け取る関数を使えば、例えば、一度に全部読むのではなく、一度にチャンクずつ読むことができます。この具体的な例では
io.Copy()
はあなたのために大変な仕事をします。
関連
-
[解決済み] goで文字列の連結を効率的に行う方法
-
[解決済み] Goでファイルが存在するかどうかを確認する方法は?
-
[解決済み] ゼロ終端のバイト配列を文字列に変換するにはどうすればよいですか?
-
[解決済み] パラメータと戻り値におけるポインタと値の比較
-
[解決済み] "宣言されているが使用されていない "という迷惑なエラーを回避する方法
-
[解決済み】関数宣言の構文:関数名の前に括弧でくくられたもの
-
[解決済み】指定したファイル内のテストケースを実行するには?
-
[解決済み] サーバーでSSLが有効になっていない
-
[解決済み] time.Sleepを使わずにすべてのゴルーチンが終了するのを待つには?
-
[解決済み] intをint64に変換するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン