package main
import (
"bufio"
"fmt"
"io"
"os"
)
//C:\Users\Administrator\Desktop\工作\FQ\SSTap-beta-setup-1.0.9.6.exe
func main() {
//打开一个源文件
srcFile, err := os.OpenFile("C:/Users/Administrator/Desktop/工作/FQ/SSTap-beta-setup-1.0.9.6.exe", os.O_RDONLY, 0666)
if err != nil {
fmt.Println("文件读取失败,err=", err)
return
}
//打开一个目标文件,不存在就创建。
dstfFile, err := os.OpenFile("C:/Users/Administrator/Desktop/SSTap.exe", os.O_WRONLY|os.O_CREATE, 0666)
//挂起关闭文件的操作
defer func() {
srcFile.Close()
dstfFile.Close()
fmt.Println("文件都已关闭")
}()
//创建一个读缓冲器和写缓冲器
reader := bufio.NewReader(srcFile)
writer := bufio.NewWriter(dstfFile)
//创建一个字节切片,大小自己定义,作为缓冲区
//每次读1024字节的数据
p := make([]byte, 1024)
for {
_, err := reader.Read(p)
if err != nil {
//判断是否到达文件末尾
if err == io.EOF {
fmt.Println("已经读取到文件末尾")
break
} else {
fmt.Println("文件读取失败,err=", err)
return
}
} else {
_, err := writer.Write(p)
if err != nil{
fmt.Println("文件写出错误,err=",err)
return
}
}
}
fmt.Println("文件拷贝完成")
}