本機系統配置: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();