登录
首页 >  Golang >  Go问答

读取文件的行数的方法是什么?

来源:stackoverflow

时间:2024-03-20 15:54:19 134浏览 收藏

对于逐行读取文件,没有现成的库函数。但是,可以实现类似的方法来完成此任务。该方法使用 `bufio.NewReader` 创建一个 `io.Reader` 的缓冲器,然后使用 `ReadLine` 方法读取文件中的行。`ReadLine` 方法返回一行字节、一个布尔值表示行是否被截断,以及一个错误。如果行被截断,则在下次调用 `ReadLine` 方法时需要继续读取该行。通过这种方式,可以逐行读取文件,并在需要时继续读取截断的行。

问题内容

我需要一次读取文件的特定行(例如一次10行),下次读取文件时从上次读取位置的下一行(11)开始读取,继续读取10行行。


解决方案


没有可用的库函数来读取特定的行数。虽然 你可以实现类似的东西来完成同样的事情。工作示例here

func readLines(n int, r io.Reader) ([]string, error) {
    rd := bufio.NewReader(r)

    var (
        lines = make([]string, 0, n)
        bs    []byte
        done  bool
    )

    for {
        if done || len(lines) == n {
            break
        }

        bss, isPrefix, err := rd.ReadLine()
        if err != nil {
            if err != io.EOF {
                return nil, err
            }

            done = true
        }

        bs = append(bs, bss...)

        if isPrefix {
            continue
        }

        lines = append(lines, string(bs))
        bs = make([]byte, 0)
    }

    return lines, nil
}

到这里,我们也就讲完了《读取文件的行数的方法是什么?》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>