QDataStream не работает должным образом

Я сохраняю некоторые данные в QDataStream и сразу же беру данные, но при извлечении счетчик показывает ноль. код выглядит нормально, но неожиданное поведение

//Overloading
QDataStream& operator<< (QDataStream& writeTO, const CascadeJobInfo& data)
{
    writeTO << data.m_infoJobType << data.m_connectionName << data.m_submitJobId << data.m_submitJobStat;
    return writeTO;
}

QDataStream& operator>> (QDataStream& readIn, CascadeJobInfo& data)
{
    readIn >> data.m_infoJobType >> data.m_connectionName >> data.m_submitJobId >> data.m_submitJobStat;
    return readIn;
}

void Fun()
{
        // Code Starts here
    projectFileName = /*Path to folder*/
    QFile file(projectFileName);
    file.open(QFile::ReadWrite);
    file.close();

    QDataStream dStream(&file);
    int jobLstCount = /*Get the Count, assume 4*/
    dStream << jobLstCount;

    for(int i = 0; i < jobLstCount; i++)
    {
    JobInfo.m_infoJobType = jobFlowItem->getJobType();
    JobInfo.m_connectionName = submitItem->connectionName();
    JobInfo.m_submitJobId = submitItem->jobID();
    JobInfo.m_submitJobStat = submitItem->jobState();
        // All valid data stored here
    }

    file.close();

    QDataStream dStreamOut(&file);
    dStreamOut >> jobLstCount; /*Count returns zero here insted of 4*/
    CascadeJobInfo jobInfo;
    // Why jobLstCount is getting zero here
    for(int i = 0 ; i < jobLstCount ; i++)
    {
    dStreamOut >> jobInfo;
    } 
}

person Sijith    schedule 23.11.2017    source источник


Ответы (1)


   file.open(QFile::ReadWrite);
   file.close(); <--- HERE

   QDataStream dStream(&file);

Вы закрываете файл, как только открываете его, поэтому в основном вы работаете с недопустимым дескриптором файла, который не будет работать. Поместите file.close() в конец кода, когда закончите.

person ismail    schedule 23.11.2017
comment
Спасибо и мне помогло - person Sijith; 23.11.2017