【问题标题】:Reading and writing file properly (handling errors, etc.) using QFile?使用 QFile 正确读取和写入文件(处理错误等)?
【发布时间】:2013-06-12 18:07:10
【问题描述】:

有没有好的教程或者有人可以指导我使用QFile 处理文件的过程? 我需要正确处理它们,提出适当的错误并确保我至少检查了错误。

到目前为止,我一直在使用此代码:

QFile f("/home/skamah/documents/myfile.txt");
if (!f.exists())
    QMessageBox("File error", "File doesn't exist.").show();
QTextStream in(&file);
QString content = in.readAll();

但是,我觉得这是一种非常先进的文件读取方式;从 qt doc 中,我发现有一个名为 error() 的方法返回一个 int 值,具体取决于它给出的错误。 我应该用那个吗? 是否有关于引发什么样的错误的约定?

【问题讨论】:

    标签: c++ file qt error-handling qt5


    【解决方案1】:

    Qt 文档是最好的指南。如果你读过它,你就会知道error() 方法返回的是QFile::FileError 值,而不是int。

    对于每种方法(openread 等),都有一种方法可以确定它是否成功。它在方法的文档中有所描述。基本规则:如果要确保一切顺利,则需要在每次方法调用后进行检查。在您确定有问题后,您可以选择如何通知调用代码或用户,以及提供哪些附加信息。例如,您可以使用例外。

    但是,QFile 缺乏确定错误真正原因的能力。例如,它无法确定是否无法写入文件,因为磁盘上没有剩余空间。而且Qt内部不使用异常,所以每次调用后都需要手动检查错误。

    【讨论】:

    • 那么QFile::FileError 不只是一个具有 int 值的枚举吗?这就是它在文档上所说的。而且我从文档中找不到任何有用的东西,但我想我会再次通读一遍......:P 所以我应该总是自己检查一切是否好?
    • 是的,你应该这样做。没有一次检查所有内容的内置功能。
    猜你喜欢
    • 1970-01-01
    • 2012-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多