需要使用io包的Copy方法
package mainimport ( "fmt" "io" "os")//自己编写一个函数,接收两个文件路径 srcFileName dstFileNamefunc CopyFile(dstFileName string, srcFileName string) (written int64, err error) { srcFile, err := os.Open(srcFileName) if err != nil { fmt.Printf("open file err = %v\n", err) return } defer srcFile.Close() //打开dstFileName dstFile, err := os.OpenFile(dstFileName, os.O_WRONLY | os.O_CREATE, 0755) if err != nil { fmt.Printf("open file err = %v\n", err) return } defer dstFile.Close() return io.Copy(dstFile, srcFile)}func main() { result, err := CopyFile("./src/main/dst.png", "./src/main/file.png") if err == nil { fmt.Println("拷贝成功!,拷贝的字节数为: ", result) }}
还可以使用下面的方法
package mainimport ( "bufio" "fmt" "io" "os")//自己编写一个函数,接收两个文件路径 srcFileName dstFileNamefunc CopyFile(dstFileName string, srcFileName string) (written int64, err error) { srcFile, err := os.Open(srcFileName) if err != nil { fmt.Printf("open file err = %v\n", err) return } defer srcFile.Close() //通过srcFile,获取到Reader reader := bufio.NewReader(srcFile) //打开dstFileName dstFile, err := os.OpenFile(dstFileName, os.O_WRONLY | os.O_CREATE, 0666) if err != nil { fmt.Printf("open file err = %v\n", err) return } writer := bufio.NewWriter(dstFile) defer func() { writer.Flush() //把缓冲区的内容写入到文件 dstFile.Close() }() return io.Copy(writer, reader)}func main() { result, err := CopyFile("./src/main/dst.png", "./src/main/file.png") if err == nil { fmt.Println("拷贝成功!拷贝的字节大写为: ", result) }}