【发布时间】:2012-04-04 13:15:59
【问题描述】:
该文件是一个 UTF8 文本文件。
每个字符有不同的字节数,每行有不同的字符数。
vb.net 是否有行号表到字节位置功能或类似的东西?
那之后怎么读?
【问题讨论】:
该文件是一个 UTF8 文本文件。
每个字符有不同的字节数,每行有不同的字符数。
vb.net 是否有行号表到字节位置功能或类似的东西?
那之后怎么读?
【问题讨论】:
StreamReader 类是逐行读取文件的典型选择。它不保留它在文件中读取内容的任何历史记录,因此不知道最后一行在哪里结束或下一行将在哪里结束。当请求时(通过ReadLine),它只处理字符,直到到达新行字符串或文件末尾。
我不知道 StreamReader 的实际实现,但我会假设它使用 Encoding 类来处理多字节编码,并且只维护一个可能预读数据的小缓冲区以提高读取性能(读取chunks 比你现在需要的 10 个字节要好)。任何其他缓冲区,例如当前行中的字符,都是需要它们的函数的本地变量,如 ReadLine。
如果您需要随机查找,您将需要使用BaseStream 属性为您自己生成一个行开始表,然后将该流查找到所需行的开头。从那里,您应该可以像往常一样使用ReadLine。
【讨论】: