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 @   wangsk  阅读(294)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
点击右上角即可分享
微信分享提示