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("文件拷贝完成")

}

 

posted @ 2019-07-02 20:25  pad+  阅读(206)  评论(0编辑  收藏  举报