天天看點

qt寫檔案,用QDataStream ,QFile 時多寫入位元組的問題

本機系統配置:ThinkPadT570、Windows10、QT5.12.2(QtCreater4.8.2)

我在用QFile和QDataStream寫檔案的時候,發現每次儲存的檔案都會在一開始的時候多出4個位元組,然後我做了一些測試,對比了一下幾個寫檔案的方法,具體如下:

//start write file :
        QByteArray ba;
        ba.resize(vShortData.size()*2);
        memcpy((char*)ba.data(),(char*)&vShortData[0],ba.size()*sizeof(char));//将之前的代碼處理後得到的QVector<unsigned short>類型的變量vShortData中的資料拷貝到 QByteArray ba;中
        QFile writefile("1.dat");//如果檔案不存在,則建立該檔案。路徑在執行檔案的上一級路徑下。
        writefile.open(QIODevice::ReadWrite);
        QDataStream out(&writefile);
        //以下為5中寫檔案的方式,有些會在檔案開頭出多寫入4個位元組表示長度,有些不會,需要仔細區分!
//        out << ba;//這種方式會在生成的檔案一開始多處4個位元組,表示QDataStream的長度
//        out.writeBytes(ba.data(),ba.size());//這種方式也會在檔案頭多出4個位元組
//        out.writeRawData(ba.data(),ba.size());//這種方式儲存的資料為實際ba中的内容,不會有任何多餘位元組
//        writefile.write(ba);//這種方式也不會有多餘位元組
        writefile.write(ba.data(),ba.size());//這種方式也不會有多餘位元組
        writefile.close();
           

繼續閱讀