добавить текст в начало текстового файла

Есть ли способ всегда добавлять новый текст в начало текстового файла в Qt? я использую QFile::Append для этого.

file.open(QFile::Append | QFile::Text)

person Lynnooi    schedule 25.10.2011    source источник


Ответы (1)


Вы не можете, см. документацию по адресу http://doc.qt.io/qt-5/qiodevice.html:

QIODevice::Append 0x0004 Устройство открывается в режиме добавления, поэтому все данные записываются в конец файла.

Проблема еще хуже, файл обычно хранится на диске последовательно, добавление (лучше: вставка) в начале файла приведет к перемещению всех данных в конец файла. файла, таким образом реорганизуя блоки файловой системы. Я не уверен, что такая файловая система существует, но если бы, я думаю, это позволило бы вставлять в файл только кратное размеру блока файловой системы.

person hochl    schedule 25.10.2011
comment
Ну, я думаю (не пробовал), что использование seek с последующей записью перезапишет данные в файле в этой позиции. Если вы хотите сделать это, найдите позицию и начните писать оттуда. См. bool QIODevice::seek ( qint64 pos ). Это ваша цель? - person hochl; 25.10.2011
comment
мне просто нужно продолжать добавлять строки текста в начало файла журнала - person Lynnooi; 25.10.2011
comment
Я почти уверен, что ваш единственный вариант - каждый раз переписывать весь файл. Это кажется плохим дизайнерским решением. Вы уверены, что вам не нужно добавлять новые данные? Обычно лог-файлы растут в конце, а не в начале :^) - person hochl; 25.10.2011
comment
Возможно, вам следует пересмотреть свои требования: почему вы хотите добавить информацию журнала перед файлом? Потому что вы хотите, чтобы ваши пользователи сначала видели самую последнюю информацию? Знаете ли вы утилиту unix tac (это кошка наоборот)? - person hmuelner; 26.10.2011
comment
Ага. это требование, данное мне. Я предполагаю, что пользователь хочет просмотреть последнюю информацию после открытия файла. - person Lynnooi; 27.10.2011