go 语言文件复制及函数封装

核心函数 io.Copy

可以通过 io.Copy 函数来复制文件

package main

import (
	"io"
	"os"
)

func main() {
	dst, err := os.OpenFile("./dst.txt", os.O_RDWR|os.O_CREATE, 07777)
	if err == nil {
		reader, err := os.Open("./test.txt")
		if err == nil {
			res, err := io.Copy(dst, reader)
			if err == nil {
				println(res)
			} else {
				println(err.Error())
			}
		}
		reader.Close()
	}
	dst.Close()
}

io.Copy函数需要2个参数 :

1 目标文件句柄 ( 创建 + 读写模式 )

2 源文件句柄 ( 可读模式 )

复制文件函数封装

package main

import (
	"io"
	"os"
)

func copy(dstFile string, src string) (bool, string) {
	// 打开源文件
	reader, err := os.Open(src)
	defer reader.Close()
	if err == nil {
		// 创建拷贝文件
		dst, errCopyOpen := os.OpenFile(dstFile, os.O_CREATE|os.O_RDWR, 0777)
		defer dst.Close()
		if errCopyOpen == nil {
			_, errCopy := io.Copy(dst, reader)
			if errCopy == nil {
				return true, ""
			} else {
				return false, errCopy.Error()
			}
		}
		return false, errCopyOpen.Error()
	}
	return false, err.Error()
}

func main() {
	res, err := copy("./d.log", "./test.txt")
	if res {
		println("复制成功")
	} else {
		println("复制失败 : ", err)
	}
}