如何重用 QFile

How to reuse QFile?

本文关键字:QFile 何重用      更新时间:2023-10-16

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

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();

但是,seconde file.open() 总是失败。重用此文件对象的正确方法是什么?

append更改底层QString

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

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

只需使用

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

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

这可能是您生成的路径有问题,因为这段代码实际上对我有用:

QFile file("d:\a.txt");
if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {
    qDebug() << file.readAll();
    file.close();
    file.setFileName("d:\b.txt");
    if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {
        qDebug() << file.readAll();
    }
}

编辑:是的,西蒙首先发现了它,你附加了太多。