1. 程式人生 > 程式設計 >Qt基礎開發之Qt檔案操作類QFile讀寫檔案的詳細方法與例項及QDataStream的使用方法

Qt基礎開發之Qt檔案操作類QFile讀寫檔案的詳細方法與例項及QDataStream的使用方法

Qt檔案操作類QFile簡介

Qt中使用QFile類來操作檔案的輸入/輸出。繼承至QIODevice,QIODevice類是輸入/輸出裝置的基類,

為裝置提供了公共實現和抽象介面用於讀寫塊資料。QIODevice又繼承至QObject。

1、使用QFile類開啟檔案

QFile的建構函式

QFile(const QString &name) //傳入一個檔案路徑

構造完成後,並沒有開啟檔案,需要使用QFile::open函式來開啟檔案

[virtual] bool QFile::open(OpenMode mode);
/*
*OpenMode mode 開啟方式,是一個列舉型別
*QIODevice::NotOpen 不開啟
*QIODevice::ReadOnly 只讀方式
*QIODevice::WriteOnly 讀寫方式
*QIODevice::ReadWrite 讀寫方式
*QIODevice::Append   追加方式
*QIODevice::Truncate 階段方式
*QIODevice::Text     轉換不同平臺的換行,讀的時候把所有換行轉成'\n',寫的時候再把'\n'轉換對應平臺的換行
*QIODevice::Unbuffered 不使用緩衝區
*/

例如:

QFile file("d:/123.txt");
file.open(QIODevice::ReadOnly);

2、QFile類關閉檔案

[virtual] void QFileDevice::close(); //重新整理緩衝區,並關閉檔案

3、QFile類檔案讀操作

QIODevice::read函式

QByteArray QIODevice::read(qint64 maxSize);//讀取maxSize個位元組,內部位置指標後移maxSize,並返回一個QByteArray物件。

例如:

QFile file("d:/123.txt");
file.open(QIODevice::ReadOnly);
qDebug() << file.read(10) << endl;
file.close();

QIODevice::readLine函式

QByteArray QIODevice::readLine(qint64 maxSize = 0) //讀取一行,但是這一行不能超過maxSize位元組,maxSize = 0代表不限制行位元組數。

例如:

QFile file("d:/123.txt");
file.open(QIODevice::ReadOnly);
qDebug() << file.readLine(10) << endl; 
file.close();

QIODevice::readAll函式

QByteArray QIODevice::readAll()

4、QFile類檔案寫操作

QIODevice::write函式

qint64 QIODevice::write(const QByteArray &byteArray); //將byteArray寫入檔案,寫完內部位置指標後移

例如:

QFile file("d:/123.txt");
file.open(QIODevice::ReadWrite | QIODevice::Text); //開啟模式可以使用‘|'組合
QByteArray byte("hellworld");
file.write(byte);
file.write(byte);
file.close();

5、QDataStream

流控檔案輸入輸出可以使用QDataStream。

流控寫入

#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檔案操作類QFile讀寫檔案的詳細方法與例項及QDataStream的使用方法,更多關於Qt基礎開發知識請檢視下面的相關連結