QT 檔案及磁碟處理

2021-08-28 12:10:06 字數 4064 閱讀 1017

qfile用於進行檔案操作,提供讀寫檔案的介面

qtextstream用於處理文字檔案,提供讀寫檔案的介面

qdatastream用於處理二進位制檔案

qtemporaryfile用於處理臨時檔案

qfileinfo可以獲取檔案資訊

qdir可以處理目錄

qfilesystemwatcher可以監視檔案和目錄變化

qfile讀寫文字

qfile file("textfile1.txt");					// 指定檔名

if(file.open(qiodevice::readonly)) // readonly唯讀writeonly只寫readwrite讀寫

qdatastream in(&file); //從檔案中讀出資料

qstring name;

qdate birthday;

qint32 age;

in >> name >> birthday >> age; //獲取字串和整數

qdebug() << name << birthday << age;

file.close();

讀取的時候要和寫入的時候型別相同的讀出

讀原始資料,可以使用readrawdata()讀取,並儲存到定義好的char*快取中

寫原始資料,可以使用writerawdata()寫入

讀寫原始資料需要對資料進行編碼和解碼。

qdir目錄操作與檔案系統

qt使用"/「作為通用的目錄分隔符和url路徑分隔符。底層會根據作業系統的不同轉換為」/「和」"

isrelative()isabsolute()函式可以判斷qdir物件是相對路徑還是絕對路徑,將相對路徑轉為絕對路徑可以使用函式makeabsolute()函式

path()可以返回目錄的路徑,可以通過setpath()設定新路徑。

dirname()可以獲得目錄名

mkdir()可以建立目錄

rename()可以改變目錄名

exists()判讀目錄是否存在

isroot()和isreadable()獲得目錄屬性

count()統計目錄下的條目,包括檔案、目錄和符號連線,總的條目數。

entrylist()返回目錄下所有條目組成的字串鍊錶。

remove()刪除檔案

redir()刪除目錄

qfileinfolist  qdir::entryinfolist

( const qstringlist &namefilters,

//此引數指定了檔名的過濾方式,如「*」,「.tar.gz」

filters filters=nofilter,

//此引數指定了檔案屬性的過濾方式,如目錄、檔案、讀寫屬性等

sortflags sort=nosort

//此引數指定了列表的排序情況

)const

// 示例

qfileinfolist list=dir.entryinfolist(string,qdir::allentries,qdir:: dirsfirst);

**qdir::filter()過濾方式**

qdir::sortflag()排序方式

qfileinfo獲取檔案資訊

qstring filename = qfiledialog::getopenfilename(this,"開啟","/", "files (*)");

qstring file = filename ;

qfileinfo info(file); // 根據輸入引數建立乙個qfileinfo物件

qint64 size = info.size(); // 獲得qfileinfo物件的大小

qdatetime created = info.created(); // 獲得qfileinfo物件的建立時間

qdatetime lastmodified = info.lastmodified(); // 獲得qfileinfo物件的最後修改時間

qdatetime lastread = info.lastread(); // 獲得qfileinfo物件的最後訪問時間

/* 判斷qfileinfo物件的檔案型別屬性 */

bool isdir = info.isdir(); // 是否為目錄

bool isfile = info.isfile(); // 是否為檔案

bool issymlink = info.issymlink(); // 判斷是否為符號連線

bool ishidden = info.ishidden(); // 判斷qfileinfo物件的隱藏屬性

bool isreadable = info.isreadable(); // 判斷qfileinfo物件的讀屬性

bool iswritable = info.iswritable(); // 判斷qfileinfo物件的寫屬性

bool i***ecutable = info.i***ecutable(); // 判斷qfileinfo物件的可執行屬性

注意:qfileinfo是一次性將檔案資訊讀到快取中,後續檔案資訊改變後,可以通過refresh()方法重新整理檔案資訊,也可以通過setcaching()方法關閉快取功能。

qfilesystemwatcher監視檔案和目錄變化

addpath()// 新增指定的檔案和目錄

addpaths()// 新增多個監視目錄

removepath()// 移除不需要監視的目錄

removepaths()// 移除不需要監視的多個目錄

filechanged()// 當監視的檔案被修改或刪除時產生訊號

directorychanged()// 當監視的目錄被改變或者刪除時產生的訊號

qfilesystemwatcher fswatcher;

fswatcher.addpath(path);

connect(&fswatcher, signal(directorychanged(qstring)), this, slot(*****));

Qt5檔案及磁碟處理

qt提供了qfile類用於進行檔案操作。qfile類提供了讀寫檔案的介面,可以讀寫文字檔案 二進位制檔案和qt的資源檔案。include include include intmain int argc,char ar return a.exec a if data.open qfile write...

ReactOS Freeldr磁碟及檔案管理2

arcopen的大體流程我們看過了。大致分為這幾步 1.函式會嘗試找到檔案所在分割槽的裝置控制代碼,如果還沒有對應的控制代碼。那麼使用device.functable中的open函式開啟裝置,並為這個裝置分配控制代碼。2.開啟裝置後條用 mount識別分割槽格式,識別成功返回另外的functable...

磁碟及檔案系統

fdisk 對磁碟進行分割槽 fdisk l 列出指定裝置的分割槽表資訊 fdisk etc sda,建立新分割槽 partprobe 讓核心更新分割槽資訊 fisk對磁碟分割槽後,使用partprobe命令,可不重啟系統就能識別 cat proc partitions,檢視分割槽資訊 root l...