C++ 使用 qfile 写入资源文件 (QIODevice::write (QFile,"x"): device not open)
C++ write to resource file with qfile (QIODevice::write (QFile,"x"): device not open)
我有以下问题,我有一个名为 data.txt 的资源文件,我想以写入权限打开它。
我正在使用 QFile 和 QTextStream 来处理它。
我只能使用 ReadOnly Acces 打开文件,但不能使用 ReadWrite 或 WriteOnly acces。
具有类似代码的导出函数工作正常,只是不适用于资源文件。
我已经尝试将前斜杠更改为双反斜杠,我运行了数百次 qmake 并重建,我重新启动了我的计算机并重新获取了资源文件。
我已经检查了 Stack 上的很多条目,但无法找到解决我问题的条目。 (大多数问题都是拼写问题,比如只有一个反斜杠)。
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();
实际结果:
我的代码应用程序输出:
文件未打开
文件以只读方式打开
我只能以只读方式打开它。
在我实施 if 之前,我得到以下输出:
QIODevice::write (QFile,":/savelocation/data.txt"): device not open
预期结果:
文件将以写入权限打开。
提前致谢。
根据 the documentation,资源嵌入在您的二进制文件中,因此在概念上和实践上都是只读的。
您必须将数据保存到文件系统上的可写位置,例如 QDir::home()
或当前工作目录 QDir::current()
.
我有以下问题,我有一个名为 data.txt 的资源文件,我想以写入权限打开它。 我正在使用 QFile 和 QTextStream 来处理它。 我只能使用 ReadOnly Acces 打开文件,但不能使用 ReadWrite 或 WriteOnly acces。 具有类似代码的导出函数工作正常,只是不适用于资源文件。
我已经尝试将前斜杠更改为双反斜杠,我运行了数百次 qmake 并重建,我重新启动了我的计算机并重新获取了资源文件。 我已经检查了 Stack 上的很多条目,但无法找到解决我问题的条目。 (大多数问题都是拼写问题,比如只有一个反斜杠)。
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();
实际结果:
我的代码应用程序输出: 文件未打开 文件以只读方式打开 我只能以只读方式打开它。
在我实施 if 之前,我得到以下输出:
QIODevice::write (QFile,":/savelocation/data.txt"): device not open
预期结果:
文件将以写入权限打开。
提前致谢。
根据 the documentation,资源嵌入在您的二进制文件中,因此在概念上和实践上都是只读的。
您必须将数据保存到文件系统上的可写位置,例如 QDir::home()
或当前工作目录 QDir::current()
.