C++ запись в файл ресурсов с помощью qfile (QIODevice::write (QFile,"x"): устройство не открыто)

У меня есть следующая проблема, у меня есть файл ресурсов с именем data.txt, и я хочу открыть его с разрешением на запись. Я использую QFile и QTextStream для работы с ним. Я могу открыть файл только с правами ReadOnly, но не с правами ReadWrite или WriteOnly. Функции экспорта с похожим кодом работают нормально, но не работают с файлом ресурсов.

Я уже пытался изменить переднюю косую черту, чтобы удвоить обратную косую черту, я запускал сотни раз qmake и rebuild, я перезагружал свой компьютер и перезагружал файл ресурсов. Я уже проверил много записей в стеке, но не смог найти ту, которая решает мою проблему. (Большинство вопросов были правописанием, например, с одним обратным слешем).

QFile file(":/savelocation/data.txt");
if (!file.exists())
{
    qDebug()<<"File not exist";
}

file.open(QIODevice::ReadWrite | QIODevice::Text);

if (file.isOpen())
{
    qDebug()<<"File is open";
    QTextStream out(&file);
    out<< "something" << endl;
}
else
{
    qDebug()<<"File is not open";
}
file.close();
file.open(QIODevice::ReadOnly);
if (file.isOpen())
{
    qDebug()<<"File is open as read only";
}
else
{
    qDebug()<<"File is not open as read only";
}
file.close();

Фактический результат:

Мои приложения выводят код: Файл не открыт. Файл открыт только для чтения. Его можно открыть только как ReadOnly для меня.

Прежде чем я реализовал, если я получил следующий вывод:

QIODevice::write (QFile,":/savelocation/data.txt"): device not open

Ожидаемый результат:

Файл будет открыт с правами на запись.

Заранее спасибо.

1 ответ

Решение

Согласно документации, ресурсы встроены в ваш двоичный файл и поэтому доступны только для чтения, как концептуально, так и практически. Вам придется сохранить ваши данные в доступном для записи месте в файловой системе, например, в QDir::home() или текущий рабочий каталог QDir::current(),

Другие вопросы по тегам