golang (*bufio.Reader)的读取方法

f, err := os.Open("./src/day1/file_read/1.txt")
    if err != nil{
        fmt.Println(err)
        os.Exit(2)
    }
    defer f.Close()
    bufReader := bufio.NewReader(f)
    //var buf [256]byte
    var i = 0
    for{
        i++
        fmt.Println(i)
        line,err := bufReader.ReadBytes('\n')
        fmt.Println(string(line))
        if err == io.EOF {
            fmt.Println("read the file finished")
            break
        }
        if err != nil{
            fmt.Println(err)
            os.Exit(2)
        }

    }
f, err := os.Open("./src/day1/file_read/1.txt")
    if err != nil{
        fmt.Println(err)
        os.Exit(2)
    }
    defer f.Close()
    bufReader := bufio.NewReader(f)
    var buf [256]byte
    var i = 0
    for{
                i++
        fmt.Println(i)
        n,err := bufReader.Read(buf[:])
        if err == io.EOF {
            fmt.Println("read the file finished")
            break
        }
        if err != nil{
            fmt.Println(err)
            os.Exit(2)
        }
        fmt.Println(string(buf[:n]))
    }

bufReader.ReadBytes('\n')和 bufReader.ReadString('\n')在读到文件最后一行时,会同时返回内容line和io.EOF。而bufReader.Read()读取到末尾时,会先返回内容,然后再下一次迭代时才返回io.EOF

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容