2014-11-14 44 views
2

我想用下面的代码保存两个文件的目录:如何重用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(); 

然而Seconde系列file.open()总是fail.What是重用此文件对象的正确方法?

+0

我很好奇你期望从中获得什么? – dtech 2014-11-14 20:39:04

+0

打开目录并保存两个文件。 – Nyaruko 2014-11-14 20:59:16

+0

我的意思是重复使用相同的'QFile'实例。 – dtech 2014-11-14 21:18:42

回答

3

append更改底层QString

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

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

只需使用

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

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

这可能是你生成路径的问题,因为此代码实际上适用于我:

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

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