在Golang中可以使用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
函數將數據塊發送到服務器。
在實際使用中,你可能還需要在服務器端編寫代碼來接收和處理傳輸的數據塊。這里只給出了客戶端的示例代碼,供參考。