Qt文件操作

本文介绍Qt文件操作。

Qt应用程序中经常会涉及到对文件的操作。Qt操作文件主要有2种方式:1)通过QFile直接操作;2)通过QTextStream,QDataStream操作。操作的文件类型有2种:1)文本文件;2)二进制文件。下面对其作相应的介绍。

1.QFile直接操作

QFile直接操作是比较原始的操作,类似与C++标准库中的read()和write()操作。QFile提供了相应的方法对文件进行打开,读写操作,详见Qt帮助文档。

1)读写文本文件

读写文本文件参考源代码如下。

void MainWindow::openFile()
{
    QFile file("./test.txt");
    char *str = new char [100];

    memset(str, 0, 100);

    if (file.open(QIODevice::ReadWrite)) {
        file.write("This is a test");
        file.flush();
        file.close();
    }

    if (file.open(QIODevice::ReadWrite)) {
        file.read(str, 100);
        qDebug() << str;
    }

    delete [] str;
}

2)读写二进制文件

读写二进制文件和读写文本文件类似,参考源代码如下。

void MainWindow::openFile()
{
    QFile file("./test.txt");
    QByteArray arr1;
    QByteArray arr2;

    arr1.append(0x01);
    arr1.append(0x02);
    arr1.append(0x03);
    arr1.append(0x04);

    if (file.open(QIODevice::ReadWrite)) {
        file.write(arr1);
        file.flush();
        file.close();
    }

    if (file.open(QIODevice::ReadWrite)) {
        arr2 = file.readAll();
        for (int i = 0; i < arr2.length(); i++) {
            qDebug() << QString::asprintf("%02x", arr2.at(i));
            file.close();
        }
    }
}

2.通过QTextStream和QDataStream操作

通过QFile直接对文件操作比较繁琐,Qt提供了QTextStream和QDataStream类分别对文本文件和二进制文件进行操作,使用起来比较方便。

1)读写文本文件

读写文本文件使用QTextStream类,参考源代码如下。

void MainWindow::openFile()
{
    QFile file("./test.txt");
    QTextStream textStream(&file);
    QString str;

    if (file.open(QIODevice::ReadWrite)) {
        textStream << "This is a test";
        file.flush();
        file.close();
    }

    if (file.open(QIODevice::ReadWrite)) {
        str = textStream.readAll();
        qDebug() << str;
    }
}

2)读写二进制文件

读写二进制文件使用QDataStream类,参考源代码如下。

void MainWindow::openFile()
{
    QFile file("./test.txt");
    QDataStream dataStream(&file);
    char buf1[4] = {0x01, 0x02, 0x03, 0x04};
    char buf2[4] = {0};

    if (file.open(QIODevice::ReadWrite)) {
        dataStream.writeRawData(&buf1[0], 4);
        file.flush();
        file.close();
    }

    if (file.open(QIODevice::ReadWrite)) {
        dataStream.readRawData(&buf2[0], 4);
        for (int i = 0; i < 4; i++) {
            qDebug() << QString::asprintf("%02x", buf2[i]);
        }
    }
}

总结,本文介绍了Qt文件操作。

你可能感兴趣的:(Qt编程,Qt,文件)