2014-11-14 4 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

+0

Откройте каталог и сохраните два файла. – Nyaruko

+0

Я имел в виду повторное использование экземпляра 'QFile'. – dtech

ответ

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

EDIT: Да, Саймон заметил это во-первых, вы слишком много добавляете.

Смежные вопросы