求教 go 读取文件并记录偏移量的正确姿势

2022-03-31 14:03:32 +08:00
 dongtingyue

目前是

f.Seek(size,0)
bfRd := bufio.NewReader(f)
line, _, err := bfRd.ReadLine()
offset +=len(string(line))+2
...省略

文件内容这样

aaaaa
bbbbb
cccc

程序计算的偏移量会大于实际文件 2 个字节,因此只能读取结束后减 2 。有其他更简洁的方式么?

1318 次点击
所在节点    Go 编程语言
3 条回复
shadeofgod
2022-03-31 14:27:24 +08:00
看文档,ReadLine tries to return a single line, not including the end-of-line bytes.

Most callers should use ReadBytes('\n') or ReadString('\n') instead or use a Scanner.
dongtingyue
2022-03-31 14:35:55 +08:00
JKeita
2022-03-31 15:14:29 +08:00
这 2 字节是换行吧?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/844095

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX