QFile перезаписать только во второй раз

Код можно найти ниже.

QFile *fd = new QFile();
fd->setFileName("TEST.txt");
fd->open(QIODevice::ReadWrite);
if(fd->exists() == true){
ui->textEdit->append("OK");}
ui->textEdit->append(QString::number(fd->write("Additional string")));

В textEdit canvas я получаю количество записанных символов, но оно не отображается в файле. После второго вызова fd-> write(...) все нормально, но почему только во второй раз?

1 ответ

Решение

Файлы буферизируются, выполняя write не обязательно означает, что данные окажутся на диске. Чтобы получить все данные, записанные так далеко в файл, вам необходимо выполнить одно из следующих действий:

  1. flush() файл или
  2. close() файл или
  3. уничтожить QFile экземпляр (здесь, удалив fd).
Другие вопросы по тегам