在文本文件中,每行末尾的\ n检测到行。为此,需要读取整个文件,这对于大文件(例如2GB)来说是个大问题。我正在寻找一种方法来读取单行而不遍历整个文件(虽然我知道它应该是一个复杂的过程)。
或者,我们可以在每行的开头写一些数字来读取。我的意思是,是否可以通过跳过行内容来读取行开头的第一个数字(转到下一行)。
768| line content is here
769| another line
770| something
如果只读取第一个数字,那么应该读取的总数据对于大文件来说并不多。
答案 0 :(得分:1)
您是否需要阅读可以在行号上编入索引的特定行?如果是这样,只需进行二分查找。在文件中间读取(比方说)200个字符以找出行号。然后在两半中重复,直到你到达正确的位置。
答案 1 :(得分:0)
我认为没有简单的方法可以做你想做的事。记录长度可变,不能提前确定长度,对吗?
如果文件始终相同(或者至少不经常修改),我会把它放到数据库中,或至少创建索引文件(记录号:偏移量)并使用该fseek()
答案 2 :(得分:0)