【问题标题】:C++ write to resource file with qfile (QIODevice::write (QFile,"x"): device not open) [duplicate]C ++使用qfile写入资源文件(QIODevice :: write(QFile,“x”):设备未打开)[重复]
【发布时间】:2019-01-02 15:25:14
【问题描述】:

我有以下问题,我有一个名为 data.txt 的资源文件,我想用写权限打开它。 我使用 QFile 和 QTextStream 来处理它。 我只能使用 ReadOnly Acces 打开文件,但不能使用 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();

实际结果:

我的应用程序输出的代码: 文件未打开 文件以只读方式打开 对我来说,它只能以只读方式打开。

在我实现之前,如果我得到以下输出:

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

预期结果:

文件将以写访问权限打开。

提前致谢。

【问题讨论】:

  • 根据the documentation,资源嵌入在您的二进制文件中,因此在概念上和实际上都是只读
  • 那么就没有办法写入这些文件了吗?
  • 没有。您必须将数据保存到文件系统上的可写位置,例如QDir::home() 或当前工作目录QDir::current()
  • 好的,我会试试谢谢,你能把这个作为答案发布,我可以标记它,还是我应该删除这个问题?

标签: c++ read-write qfile resource-files qtextstream


【解决方案1】:

根据the documentation,资源嵌入在您的二进制文件中,因此在概念上和实际上都是只读的。 您必须将数据保存到文件系统上的可写位置,例如在QDir::home() 或当前工作目录QDir::current() 下。

【讨论】:

    猜你喜欢
    • 2020-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-29
    • 2015-10-27
    • 1970-01-01
    • 2013-03-15
    • 1970-01-01
    相关资源
    最近更新 更多