pos()
我对 QTextStream 使用该方法计算的内容有疑问。我认为这是字节数,但似乎情况并非如此。
我问的原因是我正在处理文件中的行,一旦读取的行数达到某个任意数字或stream.atEnd()
为真,我就会跳出循环并保存stream.pos()
到一个qint64*
变量中。处理完成后,我会返回文件并seek(*filePosition)
回到我的最后一个位置并获取更多数据,直到stream.atEnd()
为真。从某种意义上说,这可以跟踪我的位置,但是stream.pos()
正如 Qt 文档中所述,它的调用速度非常慢。
我正在尝试的是在以有效方式读取每一行后更新文件位置。但是,它不起作用,并且当程序返回以再次读取文件时,位置不正确,因为它读取的第一行从上次迭代中先前读取的行的中间开始。
这是到目前为止的内容:
QTextStream stream(this);
stream.seek(*filePosition);
int ROW_COUNT = 1;
while (!stream.atEnd()) {
QString row = stream.readLine();
QStringList rowData = row.split(QRegExp(delimiter));
*filePosition += row.toUtf8().size();
/*
processing rowData...
*/
if (ROW_COUNT == ROW_UPLOAD_LIMIT) {
break;
}
ROW_COUNT++;
}
/*
close files, flush stream, more processing, etc...
*/