如果知道偏移量,如何从大文件中获取一行

时间:2012-04-04 04:37:44

标签: vb.net file file-io utf-8

该文件是UTF8文本文件。

每个字符都有不同的字节数,每行都有不同的字符数。

vb.net是否有行号码表到字节位置功能或类似的东西?

此后如何阅读?

1 个答案:

答案 0 :(得分:1)

StreamReader类是逐行读取文件的典型选择。它不保留文件中读取的任何历史记录,因此不知道最后一行的结束位置或下一行的位置。请求时(通过ReadLine),它只会处理字符,直到它到达新的行字符串或文件的末尾。

我不知道StreamReader的实际实现,但我认为它使用Encoding类来处理多字节编码,并且只维护一个可能预读取数据的小缓冲区以提高读取性能(读取块优于现在需要的10个字节)。任何其他缓冲区(例如当前行中的字符)都是需要它们的ReadLine函数的本地语言。

如果您需要随机搜索,则需要使用BaseStream属性为自己生成一个行启动表,然后将该流搜索到所需行的开头。从那里开始,你应该像往常一样使用ReadLine