Qt檔案系統

2021-10-05 03:43:12 字數 3189 閱讀 3720

檔案操作是應用程式必不可少的部分。qt 作為乙個通用開發庫,提供了跨平台的檔案操作能力。qt 通過qiodevice提供了對 i/o 裝置的抽象,這些裝置具有讀寫位元組塊的能力。下面是 i/o 裝置的類圖(qt5):

檔案系統分類:

是指它們的資料只能訪問一遍:從頭走到尾,從第乙個位元組開始訪問,直到最後乙個位元組,中途不能返回去讀取上乙個位元組,這其中,qprocess、qtcpsocket、qudpsoctet和qsslsocket是順序訪問裝置。

可以訪問任意位置任意次數,還可以使用qiodevice::seek()函式來重新定位檔案訪問位置指標,qfile、qtemporaryfile和qbuffer是隨機訪問裝置,

檔案操作是應用程式必不可少的部分。qt 作為乙個通用開發庫,提供了跨平台的檔案操作能力。在所有的 i/o 裝置中,檔案 i/o 是最重要的部分之一。因為我們大多數的程式依舊需要首先訪問本地檔案(當然,在雲計算大行其道的將來,這一觀點可能改變)。qfile提供了從檔案中讀取和寫入資料的能力

我們通常會將檔案路徑作為引數傳給qfile的建構函式。不過也可以在建立好物件最後,使用setfilename()來修改。qfile需要使用 / 作為檔案分隔符,不過,它會自動將其轉換成作業系統所需要的形式。例如 c:/windows 這樣的路徑在 windows 平台下同樣是可以的。

qfile主要提供了有關檔案的各種操作,比如開啟檔案、關閉檔案、重新整理檔案等,注意預設只識別utf8。我們可以使用qdatastream或qtextstream類來讀寫檔案,也可以使用qiodevice類提供的read()、readline()、readall()以及write()這樣的函式。值得注意的是,有關檔案本身的資訊,比如檔名、檔案所在目錄的名字等,則是通過qfileinfo獲取,而不是自己分析檔案路徑字串。

//讀檔案

void widget::

on_buttonread_clicked()

ui->textedit-

>

settext

(arr);}

file.

close()

;}}//寫檔案操作

void widget::

on_buttonwrite_clicked()

file.

close();}}

幾種常見的轉換:

//qstring -> qbytearray

qstring buf =

"abc"

; qbytearray qbuf = buf.

toutf8()

;//qbytearray -> char*

char

* chs = qbuf.

data()

;//char* -> qstring

qstring qs =

qstring

(chs)

;//qstring -> char*

chch = qs.

tostdstring()

.c_str()

;

qfileinfo fileinfo

(path)

;qdebug()

<<

"filename"

<

filename()

;qdebug()

<<

"filesufix"

<

suffix()

;qdebug()

<<

"size"

<

size()

;qdebug()

<<

"create time"

<

created()

.tostring

("yyyy-mm-dd hh:mm:ss"

);

qfile file

("file.dat");

file.

open

(qiodevice::writeonly)

;qdatastream out

(&file)

;out <<

qstring

("the answer is");

out <<

(qint32)

42;

file.

close()

;// 如果不想關閉檔案,可以使用 file.flush();

接下來我們將儲存到檔案中的答案取出來

qfile file

("file.dat");

file.

open

(qiodevice::readonly)

;qdatastream in

(&file)

;qstring str;

qint32 a;

in >> str >> a;

qfile file

("file.dat");

file.

open

(qiodevice::readwrite);

qdatastream stream

(&file)

;qstring str =

"the answer is 42"

;stream << str;

qtextstream:

void widget::

writetextdate()

}void widget::

readtextdate()

}

30 QT 檔案系統概述

檔案操作是應用程式必不可少的部分。qt 作為乙個通用開發庫,提供了跨平台的檔案操作能力。qt 通過qiodevice提供了對 i o 裝置的抽象,這些裝置具有讀寫位元組塊的能力。下面是 i o 裝置的類圖 qt5 qiodevice 所有 i o 裝置類的父類,提供了位元組塊讀寫的通用操作以及基本介...

檔案系統 why檔案系統

為什麼需要檔案系統,可否由作業系統直接寫裸裝置?裸裝置是一種沒有經過格式化的磁碟或分割槽,即讓作業系統直接管理操作磁碟設定,進行資料讀寫等。通過檔案系統的方式組織磁碟儲存和資料管理有很多好處,比如 1.資料讀取 管理等操作變得簡單便捷 檔案系統給使用者提供了乙個簡單的操作介面,只需簡單的操作就能實現...

檔案系統 檔案系統的架構

vfs是具體檔案系統的抽象,依靠超級塊 inode dentry以及檔案這些結構來發揮作用,檔案系統的架構就體現在這些結構的使用方式中。1 超級塊作用分析 1 2 所有的dentry都指向乙個dentry hashtable dentry hashtable是乙個樹組,每乙個樹組成員都是hash鍊錶...