二十一 緩衝區操作與目錄操作

2021-07-26 20:15:22 字數 3465 閱讀 8968

qt中緩衝區的概念

1、緩衝區的本質是一段連續的儲存空間

2、qbuffer是qt中緩衝區相關的類

3、在qt中可以將緩衝區看作一種特殊的i/o裝置

4、檔案流輔助類可以直接用於緩衝區操作

qbuffer類:

1、qbuffer類為qbytearray提供了乙個qiodevice介面,它允許使用qiodevice介面來訪問qbytearray

2、qbytearray被qbuffer視為乙個標準的可隨機訪問的檔案

3、預設的,當建立乙個qbuffer時會自動在內部自動建立乙個qbytearray緩衝區,也可以通過成員函式

void

setbuffer( qbytearray * bytearray )

或構造qbuffer時傳遞指向現有的qbytearray的指標來使用現有的qbytearray

4、通過成員函式

qbytearray &

buffer()

可直接訪問qbytearray緩衝區

qbuffer緩衝區使用場合

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

3、資料讀取速度小於資料寫入速度

else if( type == 1 )

else if( type == 2 )

buffer.close(); //記得關閉

}} void read_buffer(qbuffer& buffer)

else if( type == 1 )

else if( type == 2 )

buffer.close();

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

目錄操作

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

1、qt中的目錄分隔符統一使用』/』

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

3、qdir能夠獲取指定目錄中的所有條目(檔案和資料夾)

4、qdir能夠使用過濾字串

5、qdir可以使用絕對路徑或者相對路徑來指定目錄

常用成員函式:

qstring

absolutefilepath( const qstring & filename ) const

獲取檔案filename 絕對路徑

qstring

absolutepath() const

獲取qdir代表的絕對路徑

bool

cd( const qstring & dirname )

更改qdir指定的目錄為dirname

uint

count() const

獲取qdir指定的目錄下所有條目(檔案、目錄、符號鏈結等)數

qdir

current() [static]

qstring

currentpath() [static]

qstring

dirname() const

獲取目錄名(不是路徑)

qfileinfolist entryinfolist( const qstringlist & namefilters, filters

filters = nofilter, sortflags

sort = nosort ) const

qfileinfolist

entryinfolist( filters filters = nofilter, sortflags sort = nosort ) const

獲取qdir指定的目錄下所有條目的qfileinfo物件鍊錶,引數filters 、filters 、sort 指定過濾器與排序,具體檢視列舉變數enum qdir::filterenumqdir::sortflag

qstringlist qdir::entrylist( const qstringlist & namefilters, filters

filters = nofilter, sortflags

sort = nosort ) const

qstringlist

entrylist( filters filters = nofilter, sortflags sort = nosort ) const

獲取dir指定的目錄下所有條目的名字的鍊錶,引數filters 、filters 、sort 指定過濾器與排序,具體檢視列舉變數enumqdir::filterenum qdir::sortflag

bool

exists( const qstring & name ) const

檔案name 是否存在

bool

exists() const

dir指定的目錄是否存在

void test_dir()

if( dir.exists(path) )

//2.連線狀態訊號到槽函式

watcher::watcher(qobject*parent):qobject(parent)

//3.加入受監控的檔案或目錄

void watcher::addpath(qstring path)

#ifndef _watcher_h_

#define _watcher_h_

#include #include class watcher : public qobject //為了使用訊號與槽機制;

#endif // watcher_h

#include "watcher.h"

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

void watcher::statuschanged(const qstring&path) //此處的path是被監視的檔案路徑,為qt內部傳參

void watcher::addpath(qstring path)

//注意:如果同時監視檔案和資料夾,當同時刪除檔案與資料夾時,只會觸發乙個槽函式

int main(int argc, char *argv)

宣告:此文根據 狄泰學院唐老師的《qt實驗分析教程》創作

檔案操作 清空緩衝區

在進行輸入輸出操作或者檔案讀寫時,由於涉及到緩衝區的使用,可能遇到一些問題。例如,scanf 函式用於從stdin輸入資訊,在從標準輸入緩衝區讀取資訊時,往往以 n 作為結束輸入的標誌,但是換行符 n 仍然殘留在緩衝區中,下次再次從標準輸入讀取資訊時,殘留的換行符 n 會被當做有效資訊讀取,即,上一...

緩衝區方式讀寫操作

驅動程式建立裝置物件一共有三種讀寫方式,分別是緩衝區讀寫 直接方式讀寫和其他方式讀寫。這三種方式對應的裝置物件的flags子域分別是do buffered io do direct io和0。為什麼要設定緩衝區讀寫方式?讀寫操作一般由writefile或readfile函式引起,以writefile...

Vim 檔案與緩衝區以及操作

這裡有更好的閱讀體驗 檔案是儲存在硬碟上的,而緩衝區是在記憶體中,開啟乙個檔案,就是把檔案讀入到乙個緩衝區中,編輯檔案 緩衝區 後,二者內容 記憶體和硬碟 會出現差別,儲存檔案後,會把記憶體中的資料寫回硬碟。緩衝區列表使用ls命令檢視開啟的檔案 切換緩衝區 通過命令切換緩衝區 命令 效果bprevi...