大規模ファイル伝送をゴランで実装する方法
ファイルの転送は、Goの `io` パッケージと `net` パッケージを使用して実装できます。以下は、大規模ファイルをチャンクで転送する方法を示す簡単なサンプルコードです。
package main
import (
"fmt"
"io"
"net"
"os"
)
func main() {
// 打开大文件
file, err := os.Open("large_file.txt")
if err != nil {
fmt.Println("无法打开文件:", err)
return
}
defer file.Close()
// 创建TCP连接
conn, err := net.Dial("tcp", "localhost:8080")
if err != nil {
fmt.Println("无法连接到服务器:", err)
return
}
defer conn.Close()
// 读取文件并逐块传输
buffer := make([]byte, 1024)
for {
n, err := file.Read(buffer)
if err != nil && err != io.EOF {
fmt.Println("读取文件错误:", err)
return
}
if n == 0 {
break
}
// 发送数据块
_, err = conn.Write(buffer[:n])
if err != nil {
fmt.Println("发送数据错误:", err)
return
}
}
fmt.Println("文件传输完成")
}
上の例では、os.Open関数を使ってlarge_file.txtという大きなファイルを開いています。そのあと、TCP接続を作成し、net.Dial関数を使ってサーバのIPアドレスとポート番号に接続しています。その後、ファイルからデータの塊を読み込んで、conn.Write関数を使ってサーバにそのデータの塊を送信しています。
実際の運用では、データチャンクを受信・処理するサーバー側のコードも記述する必要があるかもしれません。ここでは参考としてクライアント側のサンプルコードのみを記載しています。