Go zero copy,复制文件

时间:2025-02-24 16:57:58
//go:build linux package zero_copy import ( "fmt" "os" "syscall" "testing" ) func TestZeroCopy(t *testing.T) { // 打开源文件和目标文件 srcFile, err := os.Open("./") if err != nil { fmt.Println("无法打开源文件:", err) return } defer srcFile.Close() dstFile, err := os.Create("./") if err != nil { fmt.Println("无法创建目标文件:", err) return } defer dstFile.Close() srcFileInfo, _ := srcFile.Stat() fileSize := int(srcFileInfo.Size()) offset := int64(0) n, err := syscall.Sendfile(int(dstFile.Fd()), int(srcFile.Fd()), &offset, fileSize) if err != nil { fmt.Println("文件拷贝失败:", err) return } fmt.Printf("成功拷贝 %d 字节\n", n) }