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

你可能感兴趣的:(golang (*bufio.Reader)的读取方法)