QT -- 文本文件的讀寫(QFile、QTextStream)


一、文本文件

文本文件是指純文本格式存儲的文件,例如:.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流中寫入內容

演示案例:

//輸入文本流
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; }

五、演示案例


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM