func copy(srcFileName string, dstFileName string) (err error) { sFile, err1 := os.Open(srcFileName) //关闭文件流,防止内存泄露 defer sFile.Close() dFile, err2 := os.OpenFile(dstFileName, os.O_CREATE|os.O_WRONLY, 0666) defer dFile.Close() if err1 != nil { return err1 } if err2 != nil { return err2 } var tempSlice = make([]byte, 128) sFile.Read(tempSlice) for { //边读边写 //读取 n1, err := sFile.Read(tempSlice) //如果读取完毕,跳出for循环 if err == io.EOF { break } if err != nil { return err } //写入 if _, err := dFile.Write(tempSlice[:n1]); err != nil { return err } } return nil } func main() { src := "D:/test.txt" dst := "D:/new-test.txt" err := copy(src, dst) if err == nil { fmt.Println("复制文件成功") } else { fmt.Println(err) } }