Qt写入xml:QIODevice :: write(QFile,“ D:/logs.xml”):设备未打开

时间:2018-10-02 13:53:06

标签: c++ xml windows qt

我正在尝试将数据保存到Qt中的XML文件中。到处都被告知我需要编写这种检查:

if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
{
    qDebug() << "Failed to open";
}
else
{
    //write to file;
}

我总是得到“无法打开”的结果。我只是找不到任何东西。如果不使用此检查,则会出现此类错误:QIODevice :: write(QFile,“ D:/logs.xml”):设备未打开。我只是不知道该怎么办。这是我在教程中尝试使用的完整代码:

QDomDocument document;
// Making the root element
QDomElement root = document.createElement("Dorms");

// Adding the root element to the docuemnt
document.appendChild(root);
QFile file;
file.setFileName("D:/logs.xml");
if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
{
    qDebug() << "Failed to open";
}
else
{
    QTextStream stream(&file);
    stream << document.toString();
    file.close();
    qDebug() << "Done";
}

有人知道我该怎么做吗?

3 个答案:

答案 0 :(得分:1)

问题可能是您无权在使用的目录D:/中创建文件。检查网址和权限。

P.S。对我来说这个例子是正确的

答案 1 :(得分:1)

您可以通过在file.errorString()失败后调用file.open()来获取确切的错误消息。我的猜测可能是访问权限错误。

答案 2 :(得分:1)

原因

您在Windows中使用了错误的斜杠。

解决方案

更改

file.setFileName("D:/logs.xml");

file.setFileName("D:\logs.xml");