c++ - 如何重用QFile?

标签 c++ qt qfile

我想使用以下代码将两个文件保存到一个目录:

QString dir = QFileDialog::getExistingDirectory(this, tr("Open Directory"),QDesktopServices::storageLocation(QDesktopServices::DesktopLocation),
                                         QFileDialog::ShowDirsOnly
                                         | QFileDialog::DontResolveSymlinks);
QFile file(dir.append("/GlobalMessage.txt"));
if(file.open(QIODevice::WriteOnly | QIODevice::Text)){
    QTextStream out(&file);

    for (int i=0;i<t_global.size();i++){
        out << t_global[i]<<" "<<y_lat.y[i]<<" "<<y_lng.y[i]<<" "<<y_alt.y[i]<<" "<<y_vx.y[i]<<" "<<y_vy.y[i]<<" "<<y_vz.y[i]<<"\n";
    }
}
// optional, as QFile destructor will already do it:
file.close(); 

file.setFileName(dir.append("/AttitudeMessage.txt"));
if(file.open(QIODevice::WriteOnly | QIODevice::Text)){
    QTextStream out(&file);

    for (int i=0;i<t_attitude.size();i++){
        out << t_attitude[i]<<" "<<y_roll.y[i]<<" "<<y_pitch.y[i]<<" "<<y_yaw.y[i]<<"\n";
    }
}
file.close();

但是第二个 file.open() 总是失败。重用这个文件对象的正确方法是什么?

最佳答案

append 更改底层 QString

这是程序中 file.filename() 的输出:

"/tmp/GlobalMessage.txt"
"/tmp/GlobalMessage.txt/AttitudeMessage.txt"

就用

QFile file(dir + "/GlobalMessage.txt");

file.setFileName(dir + "/AttitudeMessage.txt");

关于c++ - 如何重用QFile?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26938417/

相关文章:

C++ 锁定文件 Windows 阻塞模式

c++ - 自定义窗口断言 - 禁用按钮 "retry"

c++ - 当窗口/屏幕上发生任何变化时的 Qt 事件 + 屏幕截图

c++ - 如何在 Qt 中捕获异常?

qt - QFile 错误 : device not open

c++ - 显示并读取目录中的所有文件

c++ - 无法从 int 推断出 'const' ... 的模板参数

c++ - 从给定位置开始的简单链表中删除元素

c++ - Qt,C++ : QListWidget internal drag&drop - how to connect to signal?

c++ - 即使文件存在,如何修复 QFile 打开错误(未知错误)?