Qt基礎(chǔ)開(kāi)發(fā)之Qt文件操作類(lèi)QFile讀寫(xiě)文件的詳細(xì)方法與實(shí)例及QDataStream的使用方法
Qt文件操作類(lèi)QFile簡(jiǎn)介
Qt中使用QFile類(lèi)來(lái)操作文件的輸入/輸出。繼承至QIODevice,QIODevice類(lèi)是輸入/輸出設(shè)備的基類(lèi),
為設(shè)備提供了公共實(shí)現(xiàn)和抽象接口用于讀寫(xiě)塊數(shù)據(jù)。QIODevice又繼承至QObject。
1、使用QFile類(lèi)打開(kāi)文件
QFile的構(gòu)造函數(shù)
QFile(const QString &name) //傳入一個(gè)文件路徑
構(gòu)造完成后,并沒(méi)有打開(kāi)文件,需要使用QFile::open函數(shù)來(lái)打開(kāi)文件
[virtual] bool QFile::open(OpenMode mode); /* *OpenMode mode 打開(kāi)方式,是一個(gè)枚舉類(lèi)型 *QIODevice::NotOpen 不打開(kāi) *QIODevice::ReadOnly 只讀方式 *QIODevice::WriteOnly 讀寫(xiě)方式 *QIODevice::ReadWrite 讀寫(xiě)方式 *QIODevice::Append 追加方式 *QIODevice::Truncate 階段方式 *QIODevice::Text 轉(zhuǎn)換不同平臺(tái)的換行,讀的時(shí)候把所有換行轉(zhuǎn)成'\n',寫(xiě)的時(shí)候再把'\n'轉(zhuǎn)換對(duì)應(yīng)平臺(tái)的換行 *QIODevice::Unbuffered 不使用緩沖區(qū) */
例如:
QFile file("d:/123.txt"); file.open(QIODevice::ReadOnly);
2、QFile類(lèi)關(guān)閉文件
[virtual] void QFileDevice::close(); //刷新緩沖區(qū),并關(guān)閉文件
3、QFile類(lèi)文件讀操作
QIODevice::read函數(shù)
QByteArray QIODevice::read(qint64 maxSize);//讀取maxSize個(gè)字節(jié),內(nèi)部位置指針后移maxSize,并返回一個(gè)QByteArray對(duì)象。
例如:
QFile file("d:/123.txt"); file.open(QIODevice::ReadOnly); qDebug() << file.read(10) << endl; file.close();
QIODevice::readLine函數(shù)
QByteArray QIODevice::readLine(qint64 maxSize = 0) //讀取一行,但是這一行不能超過(guò)maxSize字節(jié),maxSize = 0代表不限制行字節(jié)數(shù)。
例如:
QFile file("d:/123.txt"); file.open(QIODevice::ReadOnly); qDebug() << file.readLine(10) << endl; file.close();
QIODevice::readAll函數(shù)
QByteArray QIODevice::readAll()
4、QFile類(lèi)文件寫(xiě)操作
QIODevice::write函數(shù)
qint64 QIODevice::write(const QByteArray &byteArray); //將byteArray寫(xiě)入文件,寫(xiě)完內(nèi)部位置指針后移
例如:
QFile file("d:/123.txt"); file.open(QIODevice::ReadWrite | QIODevice::Text); //打開(kāi)模式可以使用‘|'組合 QByteArray byte("hellworld"); file.write(byte); file.write(byte); file.close();
5、QDataStream
流控文件輸入輸出可以使用QDataStream。
流控寫(xiě)入
#include <QDataStream> #include <QDebug> #include <QFile> int main(int argc, char**argv) { QFile file("d:/123.txt"); file.open(QIODevice::ReadWrite); QDataStream stream(&file); int a = 10; QString str = "helloworld"; stream << a << str; file.close(); return 0; }
流控讀取
#include <QDataStream> #include <QDebug> #include <QFile> int main(int argc, char**argv) { QFile file("d:/123.txt"); file.open(QIODevice::ReadWrite); QDataStream stream(&file); int a; QString str; stream >> a >> str; qDebug() << "a:" << a << "str:" << str << endl; file.close(); return 0; }
本文主要介紹了Qt文件操作類(lèi)QFile讀寫(xiě)文件的詳細(xì)方法與實(shí)例及QDataStream的使用方法,更多關(guān)于Qt基礎(chǔ)開(kāi)發(fā)知識(shí)請(qǐng)查看下面的相關(guān)鏈接
相關(guān)文章
Qt無(wú)邊框窗口拖拽和陰影的實(shí)現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于Qt無(wú)邊框窗口拖拽和陰影的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11關(guān)于C++出現(xiàn)Bus error問(wèn)題的排查與解決
項(xiàng)目代碼中經(jīng)常出現(xiàn)莫名其妙的Bus error問(wèn)題,并且代碼中增加很多try catch 后依然不能將錯(cuò)誤捕獲,一旦Bus erro出現(xiàn),進(jìn)程直接崩潰掉,所以本文給大家介紹了關(guān)于C++出現(xiàn)Bus error問(wèn)題的排查與解決,需要的朋友可以參考下2024-01-01C語(yǔ)言實(shí)現(xiàn)單鏈表逆序與逆序輸出實(shí)例
這篇文章主要介紹了C語(yǔ)言實(shí)現(xiàn)單鏈表逆序與逆序輸出,是數(shù)據(jù)結(jié)構(gòu)與算法中比較基礎(chǔ)的重要內(nèi)容,有必要加以牢固掌握,需要的朋友可以參考下2014-08-08C++?vector與數(shù)組轉(zhuǎn)換寫(xiě)入/讀出文件方式
這篇文章主要介紹了C++?vector與數(shù)組轉(zhuǎn)換寫(xiě)入/讀出文件方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11