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()
,