Qt学习之路十一——文件的读写操作

在我们日常的使用中,我们经常需要对文件进行操作,这篇博客我们就利用qt来对文件进行读写操作。

这次我们需要利用ui界面,所以我们在创建项目的时候需要勾选创建界面。然后使用界面设计师进行布局,如下图所示。


一、读取文件

右击readfile转到槽,然后我们只需要在这个槽函数中实现功能就行了。这个槽函数实现的功能主要是获取读取的文件名,然后打开这个文件,将这个文件的内容读取到一个字节数组中,并且将文件里的内容显示到文本编辑框中。

我们使用getOpenFileName()函数来获取文件的名字。这个函数的参数意义在前一篇博客说过了,这里就不赘述了。

然后移只读的方式打开这个文件,并且创建一个字节数组的对象,我们使用readLine()这个函数来读取文件内容,如果没有到达文件末尾就一直读取内容。最后将内容显示在文本编辑框中。

void Widget::on_pushButtonRead_clicked()
{
    QString filename = QFileDialog::getOpenFileName(this, "打开文件", ".", "Txt(*.txt);;c files(*.c);; cpp files(*.cpp)");
    if(filename.isEmpty() == false)
    {
        QFile file(filename);
        bool isok = file.open(QIODevice::ReadOnly);//以只读的方式打开文件
        if(isok == true)
        {
            QByteArray array;
            while(file.atEnd() == false)
            {
                array += file.readLine();//将文件中的读取的内容保存在字节数组中。
            }
            ui->textEdit->setText(array);
        }
        file.close();//文件读取完毕后关闭文件。

    }
}

以上我们默认是从当前文件读取文件的,我们随便选择一个cpp文件来试一下,运行之后的结果就是这样。


二、保存文件

保存文件的步骤和读取文件的步骤差不多。

我们首先需要获取这个文件保存的路径,使用这个函数就可以实现了

QFileDialog::getSaveFileName(this, "保存文件", ".", "Txt(*.txt);;c files(*.c);;c++ files(*.cpp)");
这个函数的参数和getOpenFileName()参数的意思是一样的。

然后我们需要打开一个文件,将文本编辑框中的内容写入文件中,写入的时候我们用write()这个进行操作,这里我们需要注意一下这个函数的参数的类型。查看Qt的帮助文档,我们可以发现有一个重载的参数类型是char*类型的,有一个是QByteArray类型的。但是我们从文本框中得到的类型却是QString类型的。所以这里我们需要将类型进行一次转换,我们可以这样写:

file.write(str.toUtf8());

当保存完文件之后我们就可以将这个文件关闭了。

下面是具体的代码

void Widget::on_pushButtonWrite_clicked()
{
    QString filename = QFileDialog::getSaveFileName(this, "保存文件", ".", "Txt(*.txt);;c files(*.c);;c++ files(*.cpp)");
    if(filename.isEmpty() == false)
    {
        QFile file(filename);
        bool isok = file.open(QIODevice::WriteOnly);
        if(isok == true)
        {
            QString str = ui->textEdit->toPlainText();
            file.write(str.toUtf8());
        }
        file.close();
    }
}

编译完运行,我们在文本编辑框中写入一些内容,然后就将文件保存在当前目录中,可以看到目录中会多出刚刚保存的文件。


猜你喜欢

转载自blog.csdn.net/y____xiang/article/details/80516038
今日推荐