go 实现Copy方法

package main

import (
	"fmt"
	"io"
	"os"
)

/*
拷贝文件
读
写入新文件
*/
func CopyFile(src, dest string) error {
	srcFile, err := os.Open(src)
	if err != nil {
		return err
	}
	defer srcFile.Close()

	for {
		buffer := make([]byte, 1024)

		n, err := srcFile.Read(buffer)

		if err == io.EOF {
			return err
		}
		destFile, err := os.Create(dest)

		if err != nil {
			return err
		}
		defer destFile.Close()

		n, err = destFile.Write(buffer[:n])

		if err != nil {
			return err
		}
		_, err = io.Copy(destFile, srcFile)               //通过io.Copy实现
		buffer = make([]byte, 1024*1204)                  //1M
		_, err = io.CopyBuffer(destFile, srcFile, buffer) //
		_, err = io.CopyN(destFile, srcFile, 1)           //只包括前n个

		return err
	}
}

func main() {
	fmt.Println(CopyFile("test.go", "test1.go"))
}

posted @ 2022-02-03 15:34  wangsk  阅读(302)  评论(0)    收藏  举报