5-9 缓冲式读取大数据
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("文件拷贝完成") }