Qt 中的檔案操作

2021-08-22 10:24:35 字數 3515 閱讀 3379

目錄

1、qt中的io操作 

2、qfile、qfileinfo

2、qtemporaryfile

3、qtextstream 與 qdatastream 

4、qbuffer

5、qdir

6、檔案系統監視器 

qt中io操作的處理方式

-qt通過統一的介面簡化了檔案與外部裝置的操作方式 

-qt中的檔案被看作一種特殊的外部裝置 ,qt中的檔案操作與外部裝置的操作相同 

io操作中的關鍵函式介面

-開啟裝置: bool open(openmode mode) 

-讀取資料:qbytearray read(qint64 maxsize) 

-寫入資料:qint64 write(const qbytearray& bytearray) 

-關閉裝置: void close() 

io操作的本質:連續儲存空間的資料讀寫 (記憶體,硬碟、串列埠、usb口等)

qt中io裝置的型別

-順序訪問裝置 :只能從頭開始順序的讀寫資料,不能指定資料的讀寫位置

-隨機訪問裝置 :可以定位到任意的位置進行資料的讀寫(seek function) 

qt中io裝置的繼承層次圖

qfile是qt中用於檔案操作的類 ,qfile物件對應到計算機上的乙個檔案 

qfilelnfo類用於讀取檔案屬性資訊  }

void read(qstring f)

}void info(qstring f)

int main(int argc, char *argv)

qt中提供了臨時檔案操作類qtemporaryfile

-安全地建立乙個全域性唯一的臨時檔案 ,當物件銷毀時對應的臨時檔案將被刪除 

-臨時檔案的開啟方式為qiodevice::readwrite (預設)

-臨時檔案常用於大資料傳遞或者程序間通訊的場合 

qt中將檔案型別分為2大類

- 資料檔案 :檔案內容是直接的二進位制資料 

qfile直接支援文字檔案和資料檔案的讀寫

文字流和資料流

qt提供輔助類簡化了文字檔案 / 資料檔案的讀寫 

- qtextstream :寫入的資料全部轉換為可讀文字 

- qdatastream :寫入的資料根據型別轉換為二進位制資料 

if( file.open(qiodevice::readonly | qiodevice::text) )

file.close();

}}void data_stream_test(qstring f)

if( file.open(qiodevice::readonly) )

}int main(int argc, char *argv)

不同qt版本的資料流檔案格式可能不同 

- void setversion(int v)   // 設定讀寫版本號 

- int version() const   // 獲取讀寫版本號 

當資料流檔案可能在不同版本的qt程式間傳遞資料時,需要考慮版本問題! 

下面寫了乙個大致修復字尾名的**,用到了資料流

由於word文件本質就是壓縮為文件,所以會被解析為zip

void updatethread::fixfilesuffix(qstring path)

else

}if(!m_stop)

emit updateui(1);}}

qt中緩衝區的概念-緩衝區的本質為一段連續的儲存空間 ,qbuffer是qt中緩衝區相關的類 

-在qt中可以將緩衝區看作一種特殊的io裝置 ,檔案流輔助類可以直接用於操作緩衝區 

qbuffe緩衝區的使用場合

-快取外部裝置中的資料返回 

-資料讀取速度小於資料寫入速度 

else if( type == 1 )

else if( type == 2 )

buffer.close(); //關閉io裝置

}}void read_buffer(qbuffer& buffer)

else if( type == 1 )

else if( type == 2 )

buffer.close();

}}int main(int argc, char *argv)

qdir是qt中功能強大的目錄操作類

-qt中的目錄分隔符統一使用 '/' 

-qdir能夠對目錄進行任意操作(建立,刪除,重新命名) 

-qdir能夠獲取指定目錄中的所有條目(檔案和資料夾) ,qdir能夠使用過濾字串獲取指定條目 

-qdir能夠獲取系統中的所有根目錄 

if( dir.exists(path) )

;#endif // watcher_hwatcher.cpp

#include "watcher.h"

#include watcher::watcher(qobject *parent) : qobject(parent)

void watcher::statuschanged(const qstring &path)

void watcher::addpath(qstring path)

main.cpp

int main(int argc, char *argv)

Qt中的基本檔案操作

常用類 qfile qtextstream qdatastream qfiledialog qiodeive 先例項化乙個qfile物件file,file 括號內為檔名,預設為當前路徑。檔案可以用open 來開啟 用close 來關閉 用flush 來重新整理。file.open qiodeive ...

QT檔案操作

qt通過統一的方式讀寫檔案和外部裝置 qt中io裝置的型別分為順序訪問和隨機訪問兩種 qfile提供了檔案操作相關的方法 qfileinfo提供了讀取檔案屬性相關的方法 qt中提供了臨時檔案操作類qtemporaryfile include include include include inclu...

Qt 對檔案的操作

不得不說qt很強大,它完美的支援對檔案的操作,說等到對檔案的操作就要涉及到兩個基本的類,qfile 和qtextstream,前者負責檔案的開啟,關閉 等等一些執行的操作,後者是對檔案流的操作,對檔案內容的讀寫,都要通過它來完成。void setos getnetcfg else if line.l...