qt 使用 qfile 和 qdatastream 進行二進位制資料檔案的讀寫:
qdatastream 儲存檔案時使用的資料編碼的方式不同,可以儲存為兩種檔案:
儲存為stm檔案
資料流寫入資料時都使用運算子「<<」,不論寫的是 qint16、qreal 還是字串。
除了可以寫入基本的資料型別外,qdatastream 流操作還可以寫入很多其他型別的資料,如 qbrush、qcolor, qimage、qicon 等,這些稱為可序列化的資料型別(serializing qt data types)。
qstring filename = "test.stm";
qfile file(filename);
if (!file.open(qiodevice::writeonly | qiodevice::truncate))
return false;
//流讀取檔案
qdatastream stream(&file);
//設定版本號,寫入和讀取的版本號要相容
stream.setversion(qdatastream::qt_5_9);
//寫入流
qstring name = "張三";
int age = 18;
qcolor color("red");
stream<讀取stm檔案
qstring filename = "test.stm";
qfile file(filename);
if (!file.open(qiodevice::readonly))
return false;
//流讀取檔案
qdatastream stream(&file);
//設定版本號,寫入和讀取的版本號要相容
stream.setversion(qdatastream::qt_5_9);
qstring name;
int age = 0;
qcolor color;
//輸出流
stream>>name;
stream>>age;
stream>>color;
//關閉檔案
file.close();
儲存為dat檔案
建立通用格式檔案(即檔案格式完全透明,每個位元組都有具體的定義,如 seg-y 檔案)的方法是以標準編碼方式建立檔案,使檔案的每個位元組都有具體的定義。使用者在讀取這種檔案時,按照檔案格式定義讀取出每個位元組資料並做解析即可,不管使用什麼程式語言都可以編寫讀寫檔案的程式。
qstring filename = "test.dat";
qfile file(filename);
if (!file.open(qiodevice::writeonly | qiodevice::truncate))
return false;
//流讀取檔案
qdatastream stream(&file);
//windows平台
stream.setbyteorder(qdatastream::littleendian);
//寫入流
stream<讀取dat檔案
qstring filename = "test.dat";
qfile file(filename);
if (!file.open(qiodevice::readonly))
return false;
//流讀取檔案
qdatastream stream(&file);
//windows平台
stream.setbyteorder(qdatastream::littleendian);
qstring name;
int age = 0;
//輸出流
stream>>name;
stream>>age;
//關閉檔案
file.close();
二進位制檔案讀寫
define crt secure no warnings include include include size t fread void buffer,size t size,size t count,file stream size t fwrite const void buffer,si...
32 QT 二進位制檔案讀寫
qdatastream既能夠訪問 c 基本型別,如 int char short 等,也可以訪問複雜的資料型別,例如自定義的類。實際上,qdatastream對於類的儲存,是將複雜的類分割為很多基本單元實現的。結合qiodevice,qdatastream可以很方便地對檔案 網路套接字等進行讀寫操作...
C 讀寫二進位制檔案
摘要 使用c 讀寫二進位制檔案,在開發中操作的比較頻繁,今天有幸找到一篇文章,遂進行了一些試驗,並進行了部分的總結。使用c 操作檔案,是研發過程中比較頻繁的,因此進行必要的總結和封裝還是十分有用的。今天在網上找到一篇,遂進行了部分的試驗,以記之,備後用。include 寫二進位制檔案 寫二進位制檔案...