C++使用 qfile 写入资源文件 (QIODevice::write (QFile, "x" ): 设备未打开)
C++ write to resource file with qfile (QIODevice::write (QFile,"x"): device not open)
我有以下问题,我有一个名为data.txt的资源文件,我想用写权限打开它。我使用QFile和QTextStream来处理它。我只能用ReadOnly访问打开文件,但不能用ReadWrite或WriteOnly访问打开。导出具有类似代码的函数可以很好地工作,只是不能处理资源文件。
我已经尝试过将前斜杠更改为双反斜杠,我运行了无数次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
预期结果:
该文件将以写访问权限打开。
提前谢谢。
根据文档,资源嵌入在二进制文件中,因此在概念上和实践上都是只读的。您必须将数据保存到文件系统上的可写位置,例如QDir::home()
或当前工作目录QDir::current()
下。
相关文章:
- 尝试链接我的着色器时,我收到错误代码"error c5145 must write to gl_position"
- 如何从QFile阅读?它显示该文件不可访问
- QDial:如何将 int 值传递给需要常量字符*的 Qfile?
- QDataStream 读取和写入的字节数比 QFile::length() 报告要多
- 当客户端在 write() 期间终止连接时,由对等套接字错误重置连接
- Qt 写入 xml: QIODevice::write (QFile, "D:/logs.xml" ): 设备未打开
- write() 和 read() 中几乎没有混淆
- OpenCV-contrib/Python/Windows:Tracker.write() 在 matrix_wrap.
- asio::read() 需要很长时间,使用 asio::write 没有问题
- 封送指向结构异常"cannot Read or Write protected memory"的指针数组的指针数组
- BLE gattServer.write()重载函数
- Qt中的QFile::copy(source,dest)的实现有时是错误的吗?
- C++ write(); 反向写入给定的字节值
- 使用 QFile::write 的正确方法?
- C++ UDP 广播使用 ::write
- 是否可以从从 QPrintPreviewDialog 调用的 QPrinter 对话框中删除"Write to PDF"?
- 在 Windows QDir::mkpath 和 QFile::rename 上报告成功,尽管失败了
- 为什么 fstream.read 和 fstream.write 使用 char 而不是无符号字符?
- C++使用 qfile 写入资源文件 (QIODevice::write (QFile, "x" ): 设备未打开)
- QFile.write( myStruct ) - how?