Russian Qt Forum

Qt => Общие вопросы => Тема начата: fulkabaster от Май 24, 2009, 11:09



Название: Как сразу уйти в конец файла в QTextStream?
Отправлено: fulkabaster от Май 24, 2009, 11:09
Собственно, нужно просто подсчитать, сколько символов в файле. Но так как файлы большие (до десятков миллионов символов), то простой цикл от начала до конца будет не очень хорошим решением. Можно было бы просто уйти в конец файла, и взять значение функции QTextStream->pos(), но вот как уйти в конец файла? С помощью seek(), задав заведомо большое значение? Но в описании функции ничего такого не нашел, так что даже если один раз и вернет конечное значение положения, для другого раза не гарантированно.


Название: Re: Как сразу уйти в конец файла в QTextStream?
Отправлено: Rcus от Май 24, 2009, 11:15
Цитировать
qint64 QTextStream::pos () const

Returns the device position corresponding to the current position of the stream, or -1 if an error occurs (e.g., if there is no device or string, or if there's a device error).

В случае однобайтной кодировки что мешает получить длину файла попроще? А в случае многобайтных кодировок без декодирования точно количество символов не узнать.


Название: Re: Как сразу уйти в конец файла в QTextStream?
Отправлено: fulkabaster от Июнь 01, 2009, 17:16
Ага, так и сделал. Определяю по размеру файла в байтах. При больших файлах дает ошибку в несколько байтов (пустой файл занимает в линуксе 2 байта - из-за имени файла?) - что для меня приемлемо.