一、文本檔案
- 文本檔案是指純文字格式存儲的檔案,例如:.cpp、.html、.xml檔案等都是純文字檔案
二、QT純文字檔案讀寫函數
QT提供了兩種讀寫純文字檔案的方法:
- ①QFile類的IODevice讀寫功能直接進行讀寫
- ②QFile和QTextStream結合起來,用流的方法進行檔案讀寫
三、QFile類
- 功能:提供了 一個用于讀/寫檔案的接口,它可以用來讀/寫文本檔案、二進制檔案和 Qt 資源的 I/0 裝置
- QFile的其它功能,見文章:https://blog.csdn.net/qq_41453285/article/details/100019987
構造函數
QFile() QFile(const QString &name) QFile(QObject *parent) QFile(const QString &name, QObject *parent)
open函數
參數:決定檔案以何種方式打開(同方式之間可以配合使用,中間用 | 隔開),QIODevice是Qt所有I/O裝置的基礎類,為QFIle等類提供一個抽象接口
- 功能:用來打開一個檔案對象
- QIODevice::ReadOnly //以隻讀的方式打開(檔案不存在出錯)
- QIODevice::WriteOnly //以隻寫的方式打開,打開時檔案内原内容清空(檔案不存在則建立)
- QIODevice::ReadWrite //以讀寫的方式打開檔案
- QIODevice::Append //已追加的方式打開檔案,新寫入檔案的資料添加到檔案尾部
- QIODevice::Truncate //以重寫的方式打開檔案,檔案打開時原有内容全部清空
- QIODevice::Text //以文本的方式打開檔案。讀取時,将'\n'翻譯為換行符;寫入時,将行結束符轉換成本地格式(如Windows下是'\r\n')
bool QFile::open(OpenMode mode)
其它用于讀寫的函數:
close(); //關閉檔案 read(); //讀檔案,參數為讀取的長度大小(必填) readLine();//讀取一行 readAll(); //讀取所有 write(); //向檔案中寫入資料 atEnd(); //判斷是否到達檔案尾 seek(); //将檔案指針定位到指定位置處 pos(); //擷取檔案指針目前位置
四、QTextStream類
- 功能:QTextStream與IO讀寫裝置結合,為資料讀寫提供了一些友善的方法的類,以流的方式讀寫檔案
- QTextStream可以以QFile、QTemporaryFile、QBuffer、QTcpSocket、QUdpSocket等IO裝置類結合使用
構造函數
QTextStream() QTextStream(QIODevice *device) QTextStream(FILE *fileHandle, QIODevice::OpenMode openMode = QIODevice::ReadWrite) QTextStream(QString *string, QIODevice::OpenMode openMode = QIODevice::ReadWrite) QTextStream(QByteArray *array, QIODevice::OpenMode openMode = QIODevice::ReadWrite) QTextStream(const QByteArray &array, QIODevice::OpenMode openMode = QIODevice::ReadOnly)
其他函數
//将QTextStream對象設定為是否自動識别Unicode編碼(例如文本中有漢字時) void QTextStream::setAutoDetectUnicode(bool enabled)
atEnd(); //判斷是否到達檔案末尾 readAll(); //讀取全部内容 readLine(); //一次隻讀取一行内容 <<QString //向QTextStream流中寫入内容
示範案例:
//輸入文本流 qSetFieldWidth(); //位寬 left //左對齊 ================================================ QFile file("output.txt"); if(file.open(QFile::WriteOnly | QFile::Truncate)) { QTextStream out(&file); //建立寫入流 out << "PI:" << qSetFieldWidth(10) << left << 3.1415926;//寫入資料 out << "\r\ninsert new line";//寫入資料 } file.close();
//輸出檔案流 QFile fileOpen("output.txt"); if(! fileOpen.open(QFile::ReadOnly | QIODevice::Text)) qDebug() << fileOpen.errorString(); QTextStream in(&fileOpen); //建立輸出流 while(!in.atEnd()) { QString oneLine = in.readLine(); //讀取一行 qDebug() << oneLine; }
五、示範案例
- 見文章:https://blog.csdn.net/qq_41453285/article/details/100014080